/ / Jak testować granice tablicy dwuwymiarowej, aby uniknąć indexOutOfRangeException (C #) - c #, tablica wielowymiarowa, indexoutofboundsexception

Jak przetestować ograniczenia tablicy dwuwymiarowej, aby uniknąć indexOutOfRangeException (C #) - c #, tablica wielowymiarowa, indexoutofboundsexception

Bardzo łatwo jest poradzić sobie z tablicą o jednym wymiarze. Ale jak możemy uniknąć testowania lokalizacji poza zasięgiem w tablicy dwuwymiarowej o różnych długościach w każdym rzędzie (tablica poszarpana)?

oto mój kod (jeśli ktoś chce przetestować):

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

Odpowiedzi:

2 dla odpowiedzi № 1

Nie ma w tym żadnej magii - po prostu sprawdź długość i unikaj indeksowania powyżej tej wartości minus jeden, jak w przypadku tablicy jednowymiarowej.

Twój kod wygląda dość niechlujnie, czy po prostu próbujesz ominąć tablice w ten sposób?

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