Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Collection에서 지정된 인덱스의 요소를 가져오거나 설정하는 방법

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이 발생하므로 항상 컬렉션 크기를 고려해야 합니다.