반응형

배열
형식이 동일한 변수를 여러개 저장이 가능하도록 모아놓은 데이터 집합입니다.

형식
type[] arrayName;

속성
- 1차원, 혹은 다차원 또는 가변으로 만들 수 있습니다.
- 차원 수와 각 차원 길이는 배열 인스턴스를 만들 때 설정되는데, 인스턴스 수명동안 변경이 불가능합니다.
- 숫자(int형) 배열 요소의 기본값은 0으로 설정되고, 참조 요소는 null로 설정됩니다.
- 가변 배열은 요소들이 참조형식이며, null로 초기화됩니다.
- 배열은 0으로 인덱싱되고, 요소들은 0~n-1로 인덱싱됩니다.
- 배열 형식은 Array 추상 기본 형식에서 파생된 참조 형식입니다. 이 형식은 IEnumerable 및 IEnumerable을 구현하므로 foreach반복을 사용할 수 있습니다.


1차원 배열

다음과 같이 선언할 수 있습니다.
int[] arrayName = new int[10]

배열 선언 시 배열 초기값을 설정은 다음과 같이 할 수 있습니다.
int[] arrayName = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

다음과 같이 초기화 하지 않고 배열을 선언하고 배열을 할당할 때 값을 설정할 수도 있습니다.
int[] arrayName;
arrayName = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

특정 배열요소에 접근할때에는 인덱스로 접근합니다.
예를들어, 위에 arrayName에 5값을 접근하려면 arrayName[4]로 접근할 수 있습니다.


다차원 배열

2차원 배열은 다음과 같이 선언할 수 있습니다.
int[,] arrayName = new int[5, 2];

3차원 배열은 다음과 같이 선언할 수 있습니다.
int[, ,] = arrayName = new int [5, 2, 4];

초기화는 다음과 같이 할 수 있습니다.
int[,] array2 = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 } }; 

int[,] array2a = new int[5,2] { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 } };

int[,] array2b =  { { 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }, { 9, 10 } };

특정 배열요소로의 접근은 다음과 같이 할 수 있습니다.
array2[2, 1] = 9;
array2a[2, 1] = 9;
arraarray2b[2, 1] = 9;

가변 배열

가변 배열의 요소들은 차원과 크기가 다를 수 있습니다.

다음과 같이 선언해서 설정합니다.

int[][] arrayName = new int [2][];
arrayName[0] = new int[4];
arrayName[1] = new int[2];

초기값을 넣어서 값을 채울 수 있습니다.
int[][] arrayName = new int [2][];
arrayName[0] = new int[] { 1, 2, 3, 4 };
arrayName[1] = new int[] { 5, 6 };

다음과 같이 선언시에 초기화할 수도 있습니다.
int[][] arrayName = new int [][]
{
    new int[] { 1, 2, 3, 4 },
    new int[] { 5, 6 }
};

new int[][]를 다음과 같이 생략할 수 있습니다.
int[][] arrayName = 
{
    new int[] { 1, 2, 3, 4 },
    new int[] { 5, 6 }
};

배열 요소에 접근하려면 다음과 같이 하면됩니다.
arrayName[0][1] = 5;

서로 다른 크기의 세가지 2차원 배열을 만들 수 도있습니다.
int[][,] arrayName = new int[3][,]
{
    new int[,] { {1, 2}, {3, 4} },
    new int[,] { {5, 6}, {7, 8}, {9, 10} },
    new int[,] { {11, 12}, {13, 14}, {15, 16}, {17, 18} }
};
Console.WriteLine(arrayName[2][1, 0]);
출력:13

Length를 이용해서 가변 배열에 포함된 배열수를 알 수 있습니다.
Console.WriteLine(arrayName.Length);
이렇게 한다면 3이 출력됩니다.

Length를 이용해서 가변값을 다음과 같이 출력할 수 있습니다.

int[][] arrayName = new int[][]
{
    new int[] { 1, 2, 3, 4 },
    new int[] { 5, 6 }
};

for (int i = 0; i < arrayName.Length; i++)
{
    for ( int j = 0; j < arrayName[i].Length; j++ )
        Console.Write("{0} ", arrayName[i][j]);
        System.Console.WriteLine();
}


foreach 사용
foreach문을 사용하여 배열의 데이터를 가져올 수 있습니다.

다음과 같이 사용할 수 있습니다.
int[] arrayName = new int[]{1,2,3,4,5};

foreach (int i in arrayName)
    Console.Write("{0} ", i);

배열을 인수로 전달

배열을 함수 인수로 전달할 수 있습니다.
int[] arrayName = new int[]{1,2,3,4,5};
printArray(arrayName);

static void printArray(int[] arr)
{
    foreach(int i in arr)
    Console.Write("{0} ", i);
}

반응형

'개발공부 > C#' 카테고리의 다른 글

[C#]컬렉션(Collections)  (0) 2019.10.31
C# 인터페이스(interface)  (0) 2019.10.30
[C#] String.Format  (0) 2019.10.28
[C#] #region  (0) 2019.10.27
[C#] 익명 타입(Anonymous Types)  (0) 2019.10.23

+ Recent posts