/ / कैसे एक बोली-संबंधी सरणी की सीमाओं का परीक्षण करने के लिए, indexOutOfRangeException (C #) से बचने के लिए - c #, बहुआयामी-सरणी, indexoutofboundsexception

कैसे एक द्विदिश सरणी की सीमा का परीक्षण करने के लिए, indexOutOfRangeException (C #) से बचने के लिए - c #, बहुआयामी-सरणी, indexoutofboundsexception

यह एक आयाम के साथ एक सरणी से निपटने के लिए बहुत सरल है। लेकिन हम प्रत्येक पंक्ति (दांतेदार सरणी) पर अलग-अलग लंबाई के साथ एक द्विआयामी सरणी के भीतर सीमा स्थानों के परीक्षण से कैसे बच सकते हैं?

यहाँ मेरा कोड है (यदि कोई परीक्षण करना चाहता है):

static void Main(string[] args)
{
object[][] x = weirdReturn();

int k = 0;
while(x[0][k] != null) //THIS CODE PRODUCES THE EXCEPTION
{
for(int i = 0; i< x[k].Length; i++)
{
Console.Write("{0} ", x[k][i]);
}
Console.WriteLine("");
k++;
}


}


static object[][] weirdReturn()
{
DateTime d = new DateTime();
d = DateTime.Now;
object[] a2 = { "X", 1.79, d, 100 };
object[] a1 = { 0, "a", "objectX" };
object[][] retVal = new object[2][];
retVal[0] = a1;
retVal[1] = a2;
return retVal;
}

उत्तर:

जवाब के लिए 2 № 1

इसके लिए कोई जादू नहीं है - बस लंबाई की जांच करें और उस मान शून्य से परे अनुक्रमित करने से बचें, जैसा कि आप एक आयामी सरणी के साथ करेंगे।

आपका कोड बहुत गन्दा लग रहा है, क्या आप इस तरह से सरणियों पर लूप करने की कोशिश कर रहे हैं?

static void Main(string[] args)
{
object[][] x = weirdReturn();

for (int i = 0; i < x.Length; i++)
{
for (int j = 0; j < x[i].Length; j++)
{
Console.Write("{0} ", x[i][j]);
}
Console.WriteLine("");
}
}


static object[][] weirdReturn()
{
DateTime d = new DateTime();
d = DateTime.Now;
object[] a2 = { "X", 1.79, d, 100 };
object[] a1 = { 0, "a", "objectX" };
object[][] retVal = new object[2][];
retVal[0] = a1;
retVal[1] = a2;
return retVal;
}