C# List에서 특정 인덱스의 요소 다루기
C#에서 List<T> 컬렉션은 인덱서(Indexer)를 통해 지정된 위치의 요소에 바로 접근할 수 있습니다. 인덱서는 내부적으로 Item[Int32] 속성으로 구현되어 있으며, 대괄호([]) 연산자를 사용해 요소를 손쉽게 읽거나 수정할 수 있습니다.
- 요소 가져오기: list[index]
- 요소 설정(수정): list[index] = 값
인덱스는 항상 0부터 시작한다는 점에 유의해야 하며, 리스트의 유효 범위를 벗어난 인덱스에 접근하면 ArgumentOutOfRangeException이 발생합니다.
예제 1: 인덱스로 요소 가져오기
다음은 문자열 리스트를 생성한 뒤, 인덱서를 사용하여 각 인덱스에 해당하는 요소를 출력하는 예제입니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
List<String> list = new List<String>();
list.Add("100");
list.Add("200");
list.Add("300");
list.Add("400");
list.Add("500");
list.Add("600");
list.Add("700");
list.Add("800");
list.Add("900");
list.Add("1000");
Console.WriteLine("인덱스 0의 요소 = " + list[0]);
Console.WriteLine("인덱스 1의 요소 = " + list[1]);
Console.WriteLine("인덱스 2의 요소 = " + list[2]);
Console.WriteLine("인덱스 3의 요소 = " + list[3]);
Console.WriteLine("인덱스 4의 요소 = " + list[4]);
Console.WriteLine("인덱스 5의 요소 = " + list[5]);
Console.WriteLine("인덱스 6의 요소 = " + list[6]);
Console.WriteLine("인덱스 7의 요소 = " + list[7]);
}
}실행 결과
인덱스 0의 요소 = 100 인덱스 1의 요소 = 200 인덱스 2의 요소 = 300 인덱스 3의 요소 = 400 인덱스 4의 요소 = 500 인덱스 5의 요소 = 600 인덱스 6의 요소 = 700 인덱스 7의 요소 = 800
예제 2: 인덱스로 요소 설정(수정)하기
인덱서는 값을 읽는 것뿐만 아니라 기존 요소를 새 값으로 교체할 때도 사용됩니다. 아래 예제에서는 인덱스 3의 요소를 "450"으로 변경한 후, 변경된 값을 다시 출력합니다.
using System;
using System.Collections.Generic;
public class Demo {
public static void Main(String[] args) {
List<String> list = new List<String>();
list.Add("100");
list.Add("200");
list.Add("300");
list.Add("400");
list.Add("500");
list.Add("600");
list.Add("700");
list.Add("800");
list.Add("900");
list.Add("1000");
Console.WriteLine("인덱스 0의 요소 = " + list[0]);
Console.WriteLine("인덱스 1의 요소 = " + list[1]);
Console.WriteLine("인덱스 2의 요소 = " + list[2]);
Console.WriteLine("인덱스 3의 요소 = " + list[3]);
Console.WriteLine("인덱스 4의 요소 = " + list[4]);
Console.WriteLine("인덱스 5의 요소 = " + list[5]);
Console.WriteLine("인덱스 6의 요소 = " + list[6]);
Console.WriteLine("인덱스 7의 요소 = " + list[7]);
// 인덱서를 사용해 인덱스 3의 요소 수정
list[3] = "450";
Console.WriteLine("인덱스 3의 요소 [수정 후] = " + list[3]);
}
}실행 결과
인덱스 0의 요소 = 100 인덱스 1의 요소 = 200 인덱스 2의 요소 = 300 인덱스 3의 요소 = 400 인덱스 4의 요소 = 500 인덱스 5의 요소 = 600 인덱스 6의 요소 = 700 인덱스 7의 요소 = 800 인덱스 3의 요소 [수정 후] = 450
정리
C#의 List<T>에서는 list[index] 형태의 인덱서 문법 하나로 요소 조회와 수정을 모두 처리할 수 있습니다. 다만 인덱스가 0부터 시작하며 리스트 크기를 벗어나면 예외가 발생하므로, 필요하다면 Count 속성으로 범위를 확인한 후 접근하는 것이 안전합니다.