C#/기본문법2012. 4. 8. 09:55

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]와 같이 인덱싱해줘야합니다.

Posted by 투명테잎