Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C#에서 한 배열의 일부를 다른 배열로 복사하는 방법 – Array.Copy() 활용 가이드

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()를 활용하면 반복문 없이도 간결하고 효율적으로 배열 간 데이터 복사를 수행할 수 있습니다.