Array type
Peponi │ 11/21/2024 │ 4m
C#
SyntaxTypeArray[]
Array type
11/21/2024
4m
Peponi
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 }
*/