C#의 Collection<T> 클래스(System.Collections.ObjectModel 네임스페이스)는 인덱서를 제공하기 때문에 지정된 인덱스 위치의 요소를 간단하게 읽거나 수정할 수 있습니다. 아래 예제를 통해 그 사용법을 살펴보겠습니다.
예제 1: 특정 인덱스의 요소 가져오기
다음 코드는 컬렉션을 생성하고 요소를 추가한 뒤, 인덱서를 사용해 원하는 위치의 요소를 조회하는 방법을 보여줍니다.
using System;
using System.Collections.ObjectModel;
public class Demo {
public static void Main() {
Collection<string> col = new Collection<string>();
col.Add("Laptop");
col.Add("Desktop");
col.Add("Notebook");
col.Add("Ultrabook");
col.Add("Tablet");
col.Add("Headphone");
col.Add("Speaker");
Console.WriteLine("컬렉션의 요소들...");
foreach(string str in col) {
Console.WriteLine(str);
}
Console.WriteLine("인덱스 3의 요소 = " + col[3]);
Console.WriteLine("인덱스 4의 요소 = " + col[4]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
컬렉션의 요소들... Laptop Desktop Notebook Ultrabook Tablet Headphone Speaker 인덱스 3의 요소 = Ultrabook 인덱스 4의 요소 = Tablet
예제 2: 특정 인덱스의 요소 설정(수정)하기
이번에는 인덱서를 사용해 기존 요소를 새로운 값으로 변경하는 방법을 살펴보겠습니다. col[3] = "SSD";처럼 대입 연산자를 활용하면 해당 위치의 요소가 즉시 교체됩니다.
using System;
using System.Collections.ObjectModel;
public class Demo {
public static void Main() {
Collection<string> col = new Collection<string>();
col.Add("Laptop");
col.Add("Desktop");
col.Add("Notebook");
col.Add("Ultrabook");
col.Add("Tablet");
col.Add("Headphone");
col.Add("Speaker");
Console.WriteLine("컬렉션의 요소들...");
foreach(string str in col) {
Console.WriteLine(str);
}
Console.WriteLine("인덱스 3의 요소 = " + col[3]);
col[3] = "SSD";
Console.WriteLine("인덱스 3의 요소 (수정 후) = " + col[3]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
컬렉션의 요소들... Laptop Desktop Notebook Ultrabook Tablet Headphone Speaker 인덱스 3의 요소 = Ultrabook 인덱스 3의 요소 (수정 후) = SSD
정리
Collection<T>의 인덱서는 배열처럼 동작하며, col[index] 형태로 값을 읽고 쓸 수 있습니다. 단, 유효 범위를 벗어난 인덱스에 접근하면 ArgumentOutOfRangeException이 발생하므로 항상 컬렉션 크기를 고려해야 합니다.