2009-07-09 14 views
4

어떻게 C#에서 "깊은"배열을 선언합니까?C# - 다차원 int 배열

I가 같은 int 배열 싶은 : [ 1, 4, 5, 6, [3, 5, 6, 7, 9, 1, 4, 234, 2, 1 2,4,6,67,[1,2,4,44,56,7]

이전에 해봤지만 올바른 구문을 기억하지 못합니다. 그러나 아래에 쓰여진 것과 비슷합니다. Int32 [] MyDeepArray = new Int32 [] = {3, 2, 1, 5, {1, 3, 4, 5}, 1, 4, 5};

어떻게 올바르게 반복 할 수 있습니까? 배열이 배열인지 어떻게 확인합니까?

감사합니다.

답변

7

나는 당신이 찾고있는 용어가 jagged array이라고 생각합니다.

그것은 다음과 같이 수행 할 수 있습니다

int[][] jaggedArray2 = new int[][] 
{ 
    new int[] {1,3,5,7,9}, 
    new int[] {0,2,4,6}, 
    new int[] {11,22} 
}; 

그리고 당신은 같이 그들을 통해 반복 할 수

for(int i = 0; i < jaggedArray2.Length; i++) 
    for(int j = 0; j < jaggedArray2[i].Length; j++) 
    { 
     //do something here. 
    } 
+1

또는 중첩 된 foreach를 수행하십시오. –

+1

@Steven 그래, 전통을 사용했기 때문에 배열의 들쭉날쭉 한 특성을 더 잘 이해할 수있었습니다. – Joseph

1
INT32은 [] []를 2 차원 배열 곳을 선언 할 수

차원이 모두 동일해야 할 필요는 없습니다. 따라서 예를 들어 다음과 같이 지정할 수 있습니다.

[ 
[2,3,4,5] 
[5] 
[1,2,3,4,5,6,7,8] 
[3,5] 
[4] 
] 

대체 크기는 항상 동일해야합니다.

"배열이 배열인지 어떻게 확인합니까?"라는 것이 무슨 뜻인지 잘 모르겠습니다.

0

은 "어떻게 배열이 배열인지 확인 할"C#을 강력하게 형식화됩니다. 배열로 선언 된 모든 것은 배열이어야합니다. 당신이 찾고있는 것은 정수가 아닌 정수 배열입니다. 따라서 외부 배열의 모든 항목은 강력한 형식의 정수 배열입니다. 정수 및 정수 배열이 모두 섞여 있지 않습니다. 당신이 얻을 수있는 가장 가까운 것은 int 배열과 int 배열입니다. 오직 하나의 int를 모두 포함하고 있습니다. 배열을 모두 사용하기 때문에 관계없이 항상 반복 할 수 있으므로 배열처럼 취급 할 수 있으며 하나의 항목 만 포함하는 반복은 한 번만 반복됩니다.

명시 적으로 확인하려는 경우 int 배열이 하나만있는 int를 다르게 처리하기 때문에 .Length 값을 확인할 수 있습니다.