Section 20.1: 배열 선언하기

배열은 중괄호 ([]) 를 이용한 초기화 문법을 통하여 선언 및 기본값 채우기를 수행할 수 있다. 예를 들어, 10 개의 integer 배열을 생성하려면 다음과 같이 코드를 작성할 수 있다:

int[] arr = new int[10];

C# 에서의 배열 인덱스의 값은 0부터 시작하게 된다. 따라서 위 예제의 배열은 0-9 사이의 값을 가지게 된다.

예제:

int[] arr = new int[3] {7,9,4}; Console.WriteLine(arr[0]); // 출력 결과 : 7 Console.WriteLine(arr[1]); // 출력 결과 : 9

이는 시스템이 요소들의 인덱스를 0 부터 세기 시작한다는 것을 의미한다. 또한, 배열의 요소들에 대한 접근은 상수 시간 (constant time) 내에 이루어진다. 이는 배열의 첫번째 요소에의 접근에 소요되는 비용 (시간) 은 배열의 두번째, 세번째 등 다른 요소들에 대한 접근에 소요되는 비용과 동일하다는 의미이다. 또한 사용자는 배열 자체를 생성 (instantiate) 하는 것 뿐만 아니라 배열에 대한 빈 참조 (bare reference) 를 선언할 수도 있다.

int[] arr = null; // 문제 없음, 배열에 대한 null 참조자 (reference) 를 선언한다. int first = arr[0]; // 실제 참조할 배열이 존재하지 않으므로 System.NullReferenceException 을 throw 한다.

컬렉션 초기화 (collection initialization) 문법을 이용하면 배열을 생성함과 동시에 사용자 설정 값들로 초기화할 수 있다:

int[] arr = new int[] { 24, 2, 13, 47, 45 };

new int[] 부분은 배열 변수를 선언할 때에 생략이 가능하다. 이는 완전한 (self-contained) 표현식이 아니므로, 변수 선언이 아닌 부분에서의 호출은 정상적으로 작동하지 않는다. (이러한 경우, new 를 사용하는 버전의 표현식을 이용한다):

int[] arr = { 24, 2, 13, 47, 45 }; // 문제 없음 int[] arr1; arr1 = { 24, 2, 13, 47, 45 }; // 컴파일 되지 않음

암묵적 타입의 배열

위에서 소개된 선언식들의 대체 방법으로, var 키워드와의 조합을 통해 특정 타입의 이름 부분을 생략하고 배열의 타입 자체를 컴파일러로 하여금 추론하게 할 수도 있다:

// int[] 과 동일하다 var arr = new [] { 1, 2, 3 }; // string[] 과 동일하다 var arr = new [] { "one", "two", "three" }; // double[] 과 동일하다 var arr = new [] { 1.0, 2.0, 3.0 };
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts