C#에서 Array.Copy() 메서드는 한 배열의 특정 구간(섹션)을 다른 배열로 복사할 때 사용하는 대표적인 방법입니다. 이 메서드는 System 네임스페이스에 포함된 Array 클래스의 정적(static) 메서드로, 별도의 객체 생성 없이 바로 호출할 수 있습니다.
Array.Copy() 기본 문법
Array.Copy(src, dest, length);
각 매개변수의 의미는 다음과 같습니다.
src – 복사할 원본(소스) 배열
dest – 복사된 데이터가 저장될 대상(목적지) 배열
length – 복사할 요소의 개수
참고: 인덱스를 지정하는 오버로드
배열의 중간 부분부터 복사하고 싶다면 시작 인덱스를 지정할 수 있는 오버로드 버전을 사용하면 됩니다.
Array.Copy(src, srcIndex, dest, destIndex, length);
이 형태를 사용하면 원본 배열의 srcIndex 위치부터, 대상 배열의 destIndex 위치에 length개의 요소를 복사합니다.
C# Array.Copy() 사용 예제
아래 예제는 4개의 요소를 가진 원본 배열에서 앞의 2개 요소만 새로운 배열로 복사하는 코드입니다.
using System;
class Program {
static void Main() {
// 원본 배열 생성 및 초기화
int[] arrSource = new int[4];
arrSource[0] = 1;
arrSource[1] = 2;
arrSource[2] = 3;
arrSource[3] = 4;
// 복사 결과를 담을 대상 배열 (크기 2)
int[] arrTarget = new int[2];
// 원본 배열의 앞 2개 요소를 대상 배열로 복사
Array.Copy(arrSource, arrTarget, 2);
Console.WriteLine("대상 배열 내용 ...");
foreach (int value in arrTarget) {
Console.WriteLine(value);
}
}
}실행 결과
대상 배열 내용 ... 1 2
주요 특징 및 주의 사항
길이 제한: 복사할 요소 수(
length)가 대상 배열의 크기를 초과하면ArgumentException이 발생합니다.형식 호환성: 두 배열의 요소 형식이 서로 호환되지 않으면
ArrayTypeMismatchException이 발생할 수 있습니다.null 검사: 원본 또는 대상 배열이
null이면ArgumentNullException이 발생합니다.차원 제한: 기본 오버로드는 1차원 배열에 적합하며, 다차원 배열 복사 시에는 인덱스 계산에 주의해야 합니다.
이처럼 Array.Copy()를 활용하면 반복문 없이도 간결하고 효율적으로 배열 간 데이터 복사를 수행할 수 있습니다.