C# 배열 자습서: 생성, 선언, 초기화
⚡ 스마트 요약
C# 배열은 동일한 데이터 형식을 공유하는 고정 크기의 요소들을 하나의 변수 이름으로 저장합니다. 각 요소는 0부터 시작하는 인덱스에 위치하므로, 값의 선언, 초기화 및 접근이 빠르고 예측 가능합니다.

C#의 배열이란 무엇입니까?
배열은 컬렉션이나 일련의 요소를 저장하는 데 사용됩니다. 이러한 요소는 동일한 유형입니다.
예를 들어 정수 값의 배열이 있는 경우 배열은 [1, 2, 3, 4]와 같은 값의 컬렉션일 수 있습니다. 여기서 배열의 요소 수는 4입니다.
배열은 동일한 유형의 값 모음을 저장하려는 경우 유용합니다. 그래서 선언하는 대신 변수 모든 요소에 대해 하나의 변수만 선언할 수 있습니다.
이 변수는 배열의 요소를 저장하는 역할을 하는 배열 또는 요소 목록을 가리킵니다.
C#에서 배열을 사용하여 작업하는 방법을 살펴보겠습니다. 이 예에서는 정수 배열을 선언하고 이에 따라 작업하겠습니다.
아래 코드는 모두 Program.cs 파일에 만들어집니다.
단계 1) 배열 선언 – 첫 번째 단계는 배열을 선언하는 것입니다. 아래 코드 예제를 통해 이를 어떻게 달성할 수 있는지 살펴보겠습니다.
Code 설명:-
- 첫 번째 부분은 데이터 형식. 배열에 사용되는 요소의 유형을 지정합니다. 따라서 우리의 경우에는 정수 배열을 생성합니다.
- 두 번째 부분 [ ]은 배열의 순위를 지정합니다. (순위는 배열에 포함될 요소 수를 지정하는 자리 표시자입니다.)
- 다음은 우리의 경우 'values'인 배열의 이름입니다. 녹색 구불구불한 밑줄이 보이니 걱정하지 마세요. 그것은 단지 .Net에서 배열을 선언했지만 어디에서나 사용하지 않는다고 말하는 것입니다.
단계 2) 다음 단계는 어레이를 초기화하는 것입니다. 여기서는 배열이 보유할 값의 수를 지정하겠습니다. 또한 배열의 각 요소에 값을 할당할 예정입니다.
Code 설명:-
- 첫째, 배열이 보유할 요소의 개수를 3으로 설정합니다. 즉, 대괄호 안에서는 배열이 3개의 요소를 보유한다는 것을 나타냅니다.
- 다음으로 배열의 각 요소에 값을 할당합니다. 변수 이름과 배열에서의 인덱스 위치를 지정하여 값을 할당할 수 있습니다. 예를 들어 `values[0]`은 배열의 첫 번째 위치에 값을 저장한다는 의미입니다. 마찬가지로 두 번째 위치에 접근하려면 `values[1]`과 같은 표기법을 사용하고, 그 이후로도 계속해서 같은 방식으로 값을 할당합니다.
주의 사항: – 배열에서 인덱스 위치는 0부터 시작합니다.
단계 3) 이제 콘솔에 배열의 개별 요소를 표시해 보겠습니다. 이를 달성하기 위해 아래 코드를 추가해 보겠습니다.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DemoApplication { class Program { static void Main(string[] args) { Int32[] value; value=new Int32[3]; value[0]=1; value[1]=2; value[2]=3; Console.WriteLine(value[0]); Console.WriteLine(value[1]); Console.WriteLine(value[2]); Console.ReadKey(); } } }
Code 설명:-
이는 Console.WriteLine 메서드를 사용하여 요소의 각 값을 콘솔로 보내는 간단한 부분입니다.
다시 한 번, 인덱스 위치와 함께 배열 변수 이름을 사용하여 각 요소에 액세스하고 있습니다.
위 코드를 올바르게 입력하여 프로그램을 실행하면 다음과 같은 출력이 표시됩니다.
출력:
출력에서 배열의 모든 값이 콘솔에 표시되는 것을 볼 수 있습니다.
C#에서 foreach를 사용하여 배열을 순회하는 방법
인덱스를 이용해 각 요소를 읽는 방식은 효과적이지만, 배열에 많은 값이 저장될 경우 매우 번거로워집니다. foreach 루프는 배열의 모든 요소를 순서대로 방문하는 더 깔끔한 방법을 제공합니다. trac인덱스 변수를 직접 생성하세요.
foreach 문은 배열의 각 항목을 한 번에 하나씩 가져와 루프 변수에 복사합니다. 그런 다음 루프 본문 내에서 해당 변수를 사용합니다. 루프는 마지막 요소에서 자동으로 멈추기 때문에 foreach를 사용하면 배열의 끝을 지나쳐 읽어버리는 위험을 방지할 수 있습니다.
using System; namespace DemoApplication { class Program { static void Main(string[] args) { Int32[] values = new Int32[3] {1, 2, 3}; foreach (Int32 item in values) { Console.WriteLine(item); } Console.ReadKey(); } } }
위 예제는 세 개의 정수로 이루어진 배열을 선언하고 초기화한 다음, foreach 루프를 사용하여 배열을 순회합니다. 각 순회마다 변수는 초기화됩니다. 목 다음 값을 받으면 Console.WriteLine을 사용하여 출력합니다. 출력 결과는 1, 2, 3이라는 숫자가 각각 다른 줄에 표시됩니다.
배열을 사용하는 foreach 루프에서 기억해야 할 핵심 사항:
- 루프 변수는 읽기 전용이므로 값을 변경할 때보다는 값을 읽을 때 foreach를 사용하는 것이 가장 좋습니다.
- 보는 동안 요소를 수정하려면ping대신 인덱스를 사용하는 for 루프를 사용하세요.
- foreach는 1차원 배열, 다차원 배열 및 반복을 지원하는 모든 컬렉션과 함께 작동합니다.
C# 다차원 배열
지금까지 살펴본 배열은 단일 차원 배열로, 단순한 값 목록을 저장합니다. C#은 행과 열의 격자 형태로 요소를 배열하는 다차원 배열도 지원합니다. 2차원 배열은 가장 일반적인 형태로, 행렬, 게임판, 표와 같은 데이터에 적합합니다.
2차원 배열은 대괄호 안에 쉼표를 넣어 선언합니다. 쉼표가 하나씩 추가될 때마다 차원이 하나씩 늘어나므로, int[,]는 2차원 배열이고 int[,,]는 3차원 배열입니다. 배열의 요소는 각 차원의 인덱스를 사용하여 접근할 수 있습니다.
using System; namespace DemoApplication { class Program { static void Main(string[] args) { int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} }; Console.WriteLine(matrix[0, 0]); Console.WriteLine(matrix[1, 1]); Console.ReadKey(); } } }
여기서 `matrix` 배열은 두 행과 두 열을 갖습니다. `matrix[0, 0]`은 1을 반환하고, `matrix[1, 1]`은 4를 반환합니다. 배열의 차원 수는 선언 시 고정되지만, 각 차원의 크기는 배열 생성 시 설정됩니다.
C# 불규칙 배열
불규칙 배열은 요소 자체가 배열인 배열입니다. 직사각형 다차원 배열과 달리 각 내부 배열의 길이가 서로 다를 수 있기 때문에 불규칙 배열을 '배열의 배열'이라고도 부릅니다. 이러한 유연성은 각 행에 서로 다른 개수의 값이 저장될 때 유용합니다.
가변 배열은 두 쌍의 대괄호를 사용하여 선언한 다음, 각 내부 배열을 별도로 생성합니다. 다음 예제는 첫 번째 행에 세 개의 값, 두 번째 행에 두 개의 값을 저장하는 가변 배열을 생성합니다.
using System; namespace DemoApplication { class Program { static void Main(string[] args) { int[][] jagged = new int[2][]; jagged[0] = new int[] {1, 2, 3}; jagged[1] = new int[] {4, 5}; Console.WriteLine(jagged[0][2]); Console.WriteLine(jagged[1][1]); Console.ReadKey(); } } }
jagged[0][2] 표현식은 첫 번째 행의 세 번째 요소인 3을 읽고, jagged[1][1] 표현식은 두 번째 행의 두 번째 요소인 5를 읽습니다. 각 행이 별도의 배열이기 때문에 행 길이가 다를 때 jagged 배열은 메모리를 효율적으로 사용하지만 모든 내부 배열을 초기화하는 추가 단계가 필요합니다.




