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 № 1Das 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;
}