C#에서 2차원배열과 동적으로 2차원배열을 만드는 법을 작성하겠습니다.
C#에서는 C/C++과는 다르게 변수를 사용해서 배열을 만들 수 있다.
먼저, 정적 2차원배열을 만드는법입니다.
using System; public class DateTimeTest { public static void Main() { int a = 5, b = 6; int[,] c = new int[a, b]; for (int i = 0; i < a; ++i) { for (int j = 0; j < b; ++j) { c[i,j] = i + j; Console.Write(c[i,j] + " "); } Console.WriteLine(); } } }
int[.] c를 생성하는데 있어 두 인덱스 모두를 변수로 사용할 수 있습니다.
이건 C/C++에서는 사용할 수 없었던 부분입니다.
더 편리하다고 느껴집니다.
동적 2차원배열은 제네릭 컬렉션을 사용해서 해결할 수 있다.
동적 2차원배열은 다음과 같이 생길 수 있습니다.
O O O
O O O O O
O O
O O O O
위의 그림과 같이 2차원 배열이지만 각 행 마다 크기가 다른 배열이다.
이런 류는 다음과 같이 Collections.Generic의 List<T>를 사용하여 해결 할 수 있습니다.
using System; using System.Collections.Generic; public class DateTimeTest { public static void Main() { int a = 5, b = 6; List<int[]> c = new List<int[]>(); for (int i = 0; i < a; ++i) { c.Add(new int[i + b]); for (int j = 0; j < i + b; ++j) { c[i][j] = i + j; Console.Write(c[i][j] + " "); } Console.WriteLine(); } } }
처음과 두번째 예제의 차이점은 배열을 인덱싱하는 데에서 차이가 있습니다.
첫번째 예의 정적 2차원배열은 [i, j]와 같이 콤마로 인덱싱해야 하지만
List<>를 사용한 동적 2차원배열은 [i][j]와 같이 인덱싱해줘야합니다.