Favicon

Array type

Peponi11/21/20244m

C#
SyntaxTypeArray[]

1. Introduction

배열은 type + [] 를 이용하여 선언하며 형식이 동일한 변수를 여러 개 저장할 수 있다.

type[] name;

배열 요소는 배열이 만들어질 때 초기화될 수 있으며, 초기화되지 않은 요소는 기본값으로 설정된다.

  • 참조 형식 : null
  • 값 형식 : 0

C# 12부터 배열은 컬렉션 식을 사용하여 초기화할 수 있다.

배열은 다음과 같은 특징을 가진다.

  • 배열은 단일 차원, 다차원 또는 가변일 수 있다.
  • 차원은 선언할 때, 길이는 인스턴스가 생성될 때 설정된다.
  • 배열의 인덱싱은 0부터 시작한다.
  • 배열 형식은 IList, IEnumerable을 구현한다.

2. 단일 차원 배열

다음 예는 1차원 배열을 초기화하고 사용하는 것을 보여준다.

char[] chars = new char[5] { 'a', 'b', 'c', 'd', 'e' };
 
Write(chars);
 
void Write(char[] arr)
{
    foreach (char c in arr) Console.Write(c);
}
 
/* output:
abcde
*/

3. 다차원 배열

다음 예는 다차원 배열을 초기화하고 사용하는 것을 보여준다.

int[,] array2D = {
{ 1, 2 },
{ 3, 4 }
};
 
Write2D(array2D);
 
void Write2D(int[,] ints)
{
    for (int i = 0; i < ints.GetLength(0); i++)
    {
        for (int j = 0; j < ints.GetLength(1); j++)
        {
            Console.Write(ints[i, j]);
        }
        Console.WriteLine();
    }
}
 
/* output:
12
34
*/
int[,,] array3D = {
{ { 1, 2, 3 }, { 4, 5, 6 } },
{ { 7, 8, 9 }, { 10, 11, 12 } }
};
 
Write3D(array3D);
 
void Write3D(int[,,] ints)
{
    for (int i = 0; i < ints.GetLength(0); i++)
    {
        for (int j = 0; j < ints.GetLength(1); j++)
        {
            for (int k = 0; k < ints.GetLength(2); k++)
            {
                Console.Write(ints[i, j, k]);
            }
            Console.WriteLine();
        }
        Console.WriteLine();
    }
}
 
/* output:
123
456
 
789
101112
 
*/

4. 가변 배열

가변 배열은 요소로 배열을 가지고, 각 요소의 크기가 다를 수 있다.

int[][] array =
[
    [1, 2, 3, 4, 5],
    [6, 7, 8],
    [9, 10, 11, 12]
];
 
Write(array);
 
void Write(int[][] ints)
{
    foreach (var subArr in ints)
    {
        foreach (var value in subArr)
        {
            Console.Write($"{value}, ");
        }
        Console.WriteLine();
    }
}
 
/* output:
1, 2, 3, 4, 5,
6, 7, 8,
9, 10, 11, 12,
*/

5. 암시적으로 형식화된 배열

배열 초기화 시 지정된 요소에 의해 형식 유추가 가능한 경우 암시적으로 형식화된 배열을 생성할 수 있다.

var foo = new[] { 1, 2, 3, 4, 5 };
var bar = new[]
{
    new
    {
        X = 1,
        Y = 2
    },
    new
    {
        X = 5,
        Y = 6
    }
};
 
Console.WriteLine(string.Join(", ", foo));
foreach (var item in bar) Console.WriteLine(item);
 
/* output:
1, 2, 3, 4, 5
{ X = 1, Y = 2 }
{ X = 5, Y = 6 }
*/

6. 참조 자료