Section 20.9: 가변 배열 (Jagged array)
가변 배열 (Jagged array) 은 기본 형식 타입 (primitive type) 대신에, 다른 배열 (혹은 컬렉션) 들을 갖는 배열을 의미한다. 어떤 의미에서는 이는 배열 각 요소에 다른 배열이 포함된, "배열의 배열" 로도 생각할 수 있다.
이들은 기본적으로 다차원 배열과도 유사하지만, 작은 차이점이 있다 - 다차원 배열의 경우에는 미리 정해진 수의 행과 열을 가질 수 밖에 없으나, 가변 배열에서는 모든 행 (row) 은 각각 다른 갯수의 열 (column) 을 가질 수 있게 된다.
가변 배열 선언하기
8 개의 행을 갖는 가변 배열을 선언하는 예제는 다음과 같다:
int[][] a = new int[8][];
두번째 []
는 숫자가 주어지지 않은 상태에서 초기화 된다. 하위 배열들까지 모두 초기화를 하고자 한다면, 별도의 초기화를 수행해 주어야 한다:
for (int i = 0; i < a.length; i++)
{
a[i] = new int[10];
}
값을 쓰고 읽기
하위 배열 중 하나를 읽는 작업은 간단하다. a
의 세번째 행 내의 모든 숫자를 출력하는 다음 예제를 확인한다:
for (int i = 0; i < a[2].length; i++)
{
Console.WriteLine(a[2][i]);
}
특정 값을 읽기:
a[<행 번호>][<열 번호>]
특정 값 쓰기:
a[<행 번호>][<열 번호>] = <값>
유념할 점: 거의 모든 경우에, 가변 배열 (배열의 배열) 을 사용하는 것이 다차원 배열 (행렬) 을 사용하는 것보다 권장된다. 속도 면에서도 빠르며 더욱 안전하다.
중괄호들의 순서에 대한 주의점
int 형식의, 하나의 배열로 이루어진 다섯개의 배열들을 갖는 세개의 배열을 나타내는 3차원 배열이 있다고 가정해 보자. 이를 C# 에서 다음과 같이 작성할 수 있다:
int[,,][,,,,][] arr = new int[8, 10, 12][,,,,][];
CLR 타입 시스템에서는, 이 중괄호들의 표현 순서가 뒤바뀌게 되어, 위에서 선언한 arr
인스턴스는 아래와 같이 표현된다:
arr.GetType().ToString() == "System.Int32[][,,,,][,,]";
마찬가지로 다음의 예제도 확인한다:
typeof(int[,,][,,,,][]).ToString() == "System.Int32[][,,,,][,,]"
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
'번역 > C# Notes for Professionals' 카테고리의 다른 글
20.11: IEnumerable<> 인스턴스로의 배열 (0) | 2021.05.10 |
---|---|
20.10: 배열 공변성 (covariance) (0) | 2021.05.01 |
20.8: 순차열 (sequentual) 숫자들로 이루어진 배열 생성하기 (0) | 2021.04.22 |
20.7: 배열에 대해 요소 반복 (iterate) 수행하기 (0) | 2021.04.22 |
20.6: 배열 요소의 값을 얻어오거나 할당하기 (0) | 2021.04.21 |