C#에서 컬렉션의 모든 요소를 List<T>의 지정된 인덱스 위치에 한 번에 삽입하려면 InsertRange() 메서드를 사용합니다. 이 메서드는 두 개의 매개변수를 받는데, 첫 번째는 삽입이 시작될 인덱스(0부터 시작), 두 번째는 삽입할 컬렉션입니다.
기존 요소들은 자동으로 뒤로 밀려나며, 새로운 요소들이 지정된 위치부터 순서대로 들어가게 됩니다.
InsertRange() 메서드 기본 문법
list.InsertRange(int index, IEnumerable<T> collection);
- index : 새 요소가 삽입될 위치 (0부터 시작)
- collection : 삽입할 요소들을 담고 있는 컬렉션
예제 1 – 문자열 배열 삽입하기
다음은 문자열 배열의 요소들을 List의 3번째 인덱스에 삽입하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
string[] strArr = { "John", "Tom", "Kevin", "Mark", "Gary" };
List<string> list = new List<string>(strArr);
Console.WriteLine("List의 요소들...");
foreach(string str in list) {
Console.WriteLine(str);
}
strArr = new string[] { "Demo", "Text" };
Console.WriteLine("새 요소 범위 삽입 후...");
list.InsertRange(3, strArr);
foreach(string res in list) {
Console.WriteLine(res);
}
}
}실행 결과
List의 요소들... John Tom Kevin Mark Gary 새 요소 범위 삽입 후... John Tom Kevin Demo Text Mark Gary
인덱스 3의 위치였던 "Mark" 앞에 "Demo"와 "Text"가 삽입되고, 기존 요소들은 뒤로 밀려난 것을 확인할 수 있습니다.
예제 2 – 정수 배열 삽입하기
숫자 데이터에서도 동일하게 동작합니다. 다음은 정수 배열의 요소들을 2번째 인덱스에 삽입하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
int[] intArr = { 10, 20, 30, 40, 50 };
List<int> list = new List<int>(intArr);
Console.WriteLine("List의 요소들...");
foreach(int i in list) {
Console.WriteLine(i);
}
intArr = new int[] { 300, 400, 500 };
Console.WriteLine("새 요소 범위 삽입 후...");
list.InsertRange(2, intArr);
foreach(int res in list) {
Console.WriteLine(res);
}
}
}실행 결과
List의 요소들... 10 20 30 40 50 새 요소 범위 삽입 후... 10 20 300 400 500 30 40 50
정리
InsertRange() 메서드는 여러 개의 요소를 한 번에 List에 추가해야 할 때 매우 유용합니다. 단일 요소만 추가하고 싶다면 Insert() 메서드를, 단순히 끝에 추가만 하면 되는 경우라면 AddRange() 또는 Add() 메서드를 사용하면 됩니다. 상황에 맞는 메서드를 선택하면 더 효율적인 코드를 작성할 수 있습니다.