C# 배열 선언과 생성의 차이
C#에서 배열을 선언하는 것만으로는 메모리에 배열이 초기화되지 않습니다. 단순히 선언된 상태에서는 아직 실제 배열이 존재하지 않으며, 배열 변수를 초기화해야 비로소 값을 할당할 수 있습니다.
예를 들어 다음 코드는 배열의 '선언'에 해당하며, 이 시점에서는 배열이 실제로 생성되지 않습니다.
int[] id;
new 키워드로 배열 인스턴스 생성하기
반면 아래 코드처럼 작성하면 정수형 배열이 실제로 생성됩니다. C#에서 배열은 참조 타입(reference type)이기 때문에, 배열의 인스턴스를 만들려면 반드시 new 키워드를 사용해야 합니다.
int[] id = new int[5] {};즉, 선언은 변수가 어떤 형태의 배열을 참조할지 알려주는 단계일 뿐이고, new 키워드를 통해 메모리에 실제 공간이 할당되는 것입니다.
전체 예제 코드
다음 예제는 배열을 선언하고, new 키워드로 생성한 후 반복문을 이용해 요소를 초기화하고 출력하는 과정을 보여줍니다.
using System;
namespace ArrayApplication {
public class MyArray {
public static void Main(string[] args) {
int [] n = new int[5];
int i, j;
/* 배열 n의 각 요소 초기화 */
for ( i = 0; i < 5; i++ ) {
n[ i ] = i + 10;
}
/* 각 배열 요소의 값 출력 */
for (j = 0; j < 5; j++ ) {
Console.WriteLine("Element[{0}] = {1}", j, n[j]);
}
}
}
}실행 결과
Element[0] = 10 Element[1] = 11 Element[2] = 12 Element[3] = 13 Element[4] = 14
위 예제에서 볼 수 있듯이, int[] n = new int[5]; 구문을 통해 크기가 5인 정수 배열이 메모리에 생성되었고, 이후 반복문으로 각 요소에 값을 저장한 뒤 정상적으로 출력된 것을 확인할 수 있습니다.