하나의 차원을 가진 배열을 처리하는 것은 매우 간단합니다. 그러나 각 행 (지그재그 배열)마다 길이가 다른 2 차원 배열 내의 범위 위치를 테스트하지 않으려면 어떻게해야합니까? 단순히 길이를 확인하고는 단색으로 당신처럼, 그 값을 뺀 하나 이상의 색인을 피하기 - 마법이에 없다bidimensional 배열의 경계를 테스트하여 피하는 방법 indexOutOfRangeException (C#)
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가 있지만 더 나은 유연성을 위해 문제를 일반화하고 싶습니다. –
'rows'의 수는 외부 배열의 길이이며,'x.Length'를 호출하여 얻을 수 있습니다. –