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 메서드를 활용하면 배열 간 부분 복사를 반복문 없이 한 줄로 처리할 수 있어 코드가 깔끔해지고 실수도 줄어듭니다.