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

C#에서 배열 복사하기: Array.Copy 메서드 완벽 가이드

C#에서는 Array.Copy 메서드를 사용하여 한 배열의 특정 구간을 다른 배열로 손쉽게 복사할 수 있습니다. 이 메서드는 원본 배열과 대상 배열, 그리고 복사할 요소의 개수만 지정하면 되기 때문에 반복문을 직접 작성하는 것보다 훨씬 간결하고 안전합니다.

배열 준비하기

먼저 10개의 요소를 가진 원본 배열을 선언합니다.

int[] n = new int[10]; /* n은 정수 10개를 담는 배열 */

다음으로 원본 배열의 일부를 복사해 담을, 요소 5개짜리 새로운 배열을 선언합니다.

int[] m = new int[5]; /* m은 정수 5개를 담는 배열 */

Array.Copy 메서드의 매개변수

Array.Copy() 메서드는 다음과 같은 형태로 사용됩니다.

Array.Copy(원본 배열, 원본 시작 인덱스, 대상 배열, 대상 시작 인덱스, 복사할 길이);
  • 원본 배열(Array): 복사할 데이터가 있는 배열
  • 원본 시작 인덱스(int): 원본 배열에서 복사를 시작할 위치
  • 대상 배열(Array): 데이터를 받을 배열
  • 대상 시작 인덱스(int): 대상 배열에서 저장을 시작할 위치
  • 길이(int): 복사할 요소의 개수

전체 예제 코드

아래 예제를 실행하면 C#에서 배열 복사가 어떻게 동작하는지 직접 확인할 수 있습니다.

using System;
namespace ArrayApplication {
    class MyArray {
        static void Main(string[] args) {
            int[] n = new int[10]; /* n은 정수 10개를 담는 배열 */
            int[] m = new int[5]; /* m은 정수 5개를 담는 배열 */

            for (int i = 0; i < 10; i++) {
                n[i] = i + 100;
            }

            Console.WriteLine("원본 배열...");
            foreach (int j in n) {
                int i = j - 100;
                Console.WriteLine("Element[{0}] = {1}", i, j);
            }

            // n 배열의 인덱스 0부터 5개 요소를 m 배열의 인덱스 0부터 복사
            Array.Copy(n, 0, m, 0, 5);

            Console.WriteLine("새로운 배열...");
            foreach (int res in m) {
                Console.WriteLine(res);
            }
            Console.ReadKey();
        }
    }
}

실행 결과

원본 배열...
Element[0] = 100
Element[1] = 101
Element[2] = 102
Element[3] = 103
Element[4] = 104
Element[5] = 105
Element[6] = 106
Element[7] = 107
Element[8] = 108
Element[9] = 109
새로운 배열...
100
101
102
103
104

정리

위 예제에서 Array.Copy(n, 0, m, 0, 5) 호출은 원본 배열 n의 인덱스 0부터 시작해 5개의 요소(100~104)를 대상 배열 m의 인덱스 0부터 차례대로 복사합니다. 이처럼 Array.Copy 메서드를 활용하면 배열 간 부분 복사를 반복문 없이 한 줄로 처리할 수 있어 코드가 깔끔해지고 실수도 줄어듭니다.