C#에서는 한 번 생성된 배열의 크기를 직접 변경할 수 없습니다. 하지만 Array.Resize 메서드를 사용하면 기존 배열을 지정한 크기의 새로운 배열로 교체하는 방식으로 크기를 조정할 수 있습니다.
배열 선언 및 초기화
먼저 다음과 같이 문자형(char) 배열을 선언하고 일부 요소에 값을 할당해 보겠습니다.
char[] ch = new char[10]; ch[0] = 'a'; ch[1] = 'b';
Array.Resize로 크기 조정하기
Array.Resize 메서드는 첫 번째 인자로 ref 키워드가 붙은 배열 참조를, 두 번째 인자로 새로운 크기를 받습니다. 내부적으로는 지정된 크기의 새 배열을 생성한 뒤 기존 요소들을 복사하고, 원본 배열 참조를 새 배열로 교체합니다.
Array.Resize<char>(ref ch, 10);
전체 예제 코드
using System;
class Program {
static void Main() {
char[] ch = new char[10];
ch[0] = 'a';
ch[1] = 'b';
// 배열 크기 조정
Array.Resize<char>(ref ch, 10);
// 새로운 요소에 값 설정
ch[2] = 'c';
ch[3] = 'd';
ch[4] = 'e';
ch[5] = 'f';
ch[6] = 'g';
ch[7] = 'h';
ch[8] = 'i';
ch[9] = 'j';
Console.WriteLine("New Array: " + new string(ch));
}
}실행 결과
New Array: abcdefghij
참고: 동적 크기 조정이 필요하다면?
크기가 자주 변하는 데이터를 다룰 때는 매번 Array.Resize를 호출하는 것보다 List<T>와 같은 컬렉션을 사용하는 것이 더 효율적입니다. List는 내부적으로 용량(capacity)을 자동으로 관리하므로 요소의 추가와 삭제가 간편합니다. 또한 Array.Resize는 새 배열을 생성해 복사하는 작업을 수행하므로, 반복적으로 호출하면 성능 저하가 발생할 수 있다는 점도 유의해야 합니다.