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

C# Hashtable에서 특정 키에 연결된 값 가져오기 및 설정하기

C#의 Hashtable에서 특정 키(key)에 연결된 값을 가져오거나 설정하려면 인덱서(Indexer)를 활용할 수 있습니다. 해시테이블 이름 뒤에 대괄호 [ ] 안에 키를 넣으면 해당 키와 연결된 값을 읽어오거나 새로운 값으로 변경할 수 있습니다.

예제 1: 키로 값 가져오기

다음은 해시테이블에 여러 개의 키-값 쌍을 추가한 후, 키 "3"에 연결된 값을 조회하는 예제입니다.

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      Hashtable hash = new Hashtable();
      hash.Add("1", "AB");
      hash.Add("2", "BC");
      hash.Add("3", "DE");
      hash.Add("4", "EF");
      hash.Add("5", "GH");
      hash.Add("6", "IJ");
      hash.Add("7", "KL");
      hash.Add("8", "MN");
      hash.Add("9", "OP");
      hash.Add("10", "QR");

      Console.WriteLine("키 3의 값 = " + hash["3"]);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

키 3의 값 = DE

예제 2: 키의 값 변경하기

인덱서는 값을 읽는 것뿐만 아니라 기존 키에 새로운 값을 할당하는 데에도 사용할 수 있습니다. 아래 예제에서는 키 "3"의 값을 "UV"로 업데이트하는 과정을 보여줍니다.

using System;
using System.Collections;

public class Demo {
   public static void Main() {
      Hashtable hash = new Hashtable();
      hash.Add("1", "AB");
      hash.Add("2", "BC");
      hash.Add("3", "DE");
      hash.Add("4", "EF");
      hash.Add("5", "GH");
      hash.Add("6", "IJ");
      hash.Add("7", "KL");
      hash.Add("8", "MN");
      hash.Add("9", "OP");
      hash.Add("10", "QR");

      Console.WriteLine("키 3의 값 = " + hash["3"]);

      // 키 3의 값을 새로 설정
      hash["3"] = "UV";

      Console.WriteLine("키 3의 값 (업데이트 후) = " + hash["3"]);
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

키 3의 값 = DE
키 3의 값 (업데이트 후) = UV

정리

Hashtable의 인덱서(hash[key])는 내부적으로 Item 속성으로 동작합니다. 이를 통해 다음 두 가지 작업을 수행할 수 있습니다.

- 값 가져오기(Get): 지정된 키와 연결된 값을 반환합니다. 만약 해당 키가 존재하지 않으면 null을 반환합니다.
- 값 설정하기(Set): 지정된 키가 이미 존재하면 그 값을 덮어쓰고, 존재하지 않으면 새로운 키-값 쌍을 추가합니다.

단, 존재하지 않는 키의 값을 읽으려 할 때 예외가 발생하지 않고 null이 반환된다는 점, 그리고 Hashtable은 스레드 안전(thread-safe)하지 않으므로 멀티스레드 환경에서는 별도의 동기화 처리가 필요하다는 점을 유의해야 합니다.