/ / Testen der Grenzen eines zweidimensionalen Arrays, um indexOutOfRangeException (C #) zu vermeiden - c #, mehrdimensionales Array, indexoutofboundsexception

Testen von Grenzen eines zweidimensionalen Arrays, um indexOutOfRangeException (C #) zu vermeiden - c #, multidimensionales Array, indexoutofboundexception

Es ist ziemlich einfach, mit einem Array mit einer Dimension umzugehen. Aber wie können wir vermeiden, Positionen außerhalb des Bereichs innerhalb eines zweidimensionalen Arrays mit unterschiedlichen Längen in jeder Zeile (gezacktes Array) zu testen?

Hier ist mein Code (wenn jemand testen möchte):

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;
}

Antworten:

2 für die Antwort № 1

Das ist kein Wunder - überprüfen Sie einfach die Länge und vermeiden Sie eine Indizierung über diesen Wert hinaus minus eins, wie Sie es bei einem eindimensionalen Array tun würden.

Ihr Code sieht ziemlich chaotisch aus. Versuchen Sie nur, die Arrays wie folgt zu durchlaufen?

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;
}