C#에서 기존 리스트 중간이나 끝에 다른 컬렉션의 요소들을 한꺼번에 삽입하려면 InsertRange() 메서드를 사용하면 됩니다. 이 메서드를 활용하면 Add() 메서드로 하나씩 반복해서 추가하는 번거로움 없이, 두 개 이상의 요소를 한 번의 호출로 간편하게 리스트에 넣을 수 있습니다.
InsertRange() 메서드란?
InsertRange(int index, IEnumerable<T> collection)은 두 개의 매개변수를 받습니다.
- index: 요소를 삽입할 시작 위치(인덱스)
- collection: 삽입할 요소들이 담긴 컬렉션(배열, 리스트 등)
지정한 인덱스 위치부터 컬렉션의 모든 요소가 순서대로 삽입되며, 기존 요소들은 자동으로 뒤로 밀려납니다.
예제: 리스트 준비하기
먼저 정수형 리스트를 하나 만들어 보겠습니다.
List<int> arr1 = new List<int>(); arr1.Add(10); arr1.Add(20); arr1.Add(30); arr1.Add(40); arr1.Add(50);
삽입할 배열 준비하기
다음으로, 위 리스트에 추가할 요소들을 담은 배열을 생성합니다.
int[] arr2 = new int[4]; arr2[0] = 60; arr2[1] = 70; arr2[2] = 80; arr2[3] = 90;
InsertRange()로 요소 일괄 삽입하기
인덱스 5, 즉 리스트의 마지막 위치에 배열 arr2의 모든 요소를 한 번에 삽입합니다.
arr1.InsertRange(5, arr2);
이 한 줄만으로 60, 70, 80, 90 네 개의 요소가 동시에 추가됩니다.
전체 예제 코드
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
List<int> arr1 = new List<int>();
arr1.Add(10);
arr1.Add(20);
arr1.Add(30);
arr1.Add(40);
arr1.Add(50);
Console.WriteLine("초기 리스트 ...");
foreach (int i in arr1) {
Console.WriteLine(i);
}
int[] arr2 = new int[4];
arr2[0] = 60;
arr2[1] = 70;
arr2[2] = 80;
arr2[3] = 90;
arr1.InsertRange(5, arr2);
Console.WriteLine("요소 추가 후 ...");
foreach (int i in arr1) {
Console.WriteLine(i);
}
}
}실행 결과
초기 리스트 ... 10 20 30 40 50 요소 추가 후 ... 10 20 30 40 50 60 70 80 90
정리
InsertRange() 메서드를 사용하면 반복문 없이도 여러 요소를 원하는 위치에 한 번에 삽입할 수 있습니다. 특히 배열이나 다른 리스트의 데이터를 기존 리스트에 통합할 때 코드가 훨씬 간결해지고 가독성도 좋아집니다. 단, 삽입 위치의 인덱스가 유효 범위(0 ~ Count)를 벗어나면 ArgumentOutOfRangeException이 발생하므로 주의해야 합니다.