C#에서 사전 키가 있는지 확인

Bilal Shahid 2023년10월12일
  1. try-catch를 사용하여 C#에서 사전 키의 존재 여부 확인
  2. ContainsKey()를 사용하여 C#에서 사전 키의 존재 여부 확인
  3. TryGetValue()를 사용하여 C#에서 사전 키의 존재 여부 확인
C#에서 사전 키가 있는지 확인

Dictionary는 키와 값을 매핑하는 경향이 있습니다. 여기에는 특정 값이 매핑되는 특정 키가 포함됩니다. 중복 키는 허용되지 않으며 이것이 사전의 전체 목표입니다.

오늘 우리는 키가 이미 Dictionary에 있는지 여부를 확인하는 방법을 살펴볼 것입니다.

try-catch를 사용하여 C#에서 사전 키의 존재 여부 확인

먼저 각 특정 학생 ID를 CGPA에 매핑하는 students라는 사전을 만드는 것으로 시작하겠습니다.

Dictionary<int, double> students = new Dictionary<int, double>();
students[101] = 3.22;
students[102] = 3.44;
students[103] = 2.98;

CGPA는 이중 형식이어야 하므로 <TKEY, TVALUE>를 ID 및 CGPA에 대해 각각 <int, double>로 정의했습니다.

students에 학생 102에 대한 항목이 있는지 찾고 싶다고 가정해 봅시다. 그렇습니다. 하지만 우리에게 똑바로 알려주는 코드가 필요합니다.

이를 위해 다음과 같이 try-catch 예외를 사용할 수 있습니다.

try {
  Console.WriteLine(students[102].ToString());
} catch (Exception e) {
  Console.WriteLine("No such key present");
}

출력:

3.44

그러나 이제 학생 104에 대해 동일한 작업을 수행하려고 하면 다음과 같은 일이 발생합니다.

출력:

No such key present

왜요? 글쎄, ToString() 메서드는 null이 아닌 값에 대해서만 작동합니다. 학생 104는 null이고 students에 항목이 없기 때문에 예외가 발생합니다.

그리고 예외를 던지기 보다는 그것을 잡아서 콘솔에 해당 키가 없습니다.라는 메시지를 표시하는 경향이 있습니다.

따라서 키가 있는지 여부를 확인하는 효과적인 방법입니다. 하지만 더 간단하게 만들 수 있습니까?

ContainsKey()를 사용하여 C#에서 사전 키의 존재 여부 확인

다음 코드를 관찰하십시오.

if (!students.ContainsKey(104)) {
  Console.WriteLine("No such key present");
}

해당 키가 없기 때문에 오류가 표시됩니다.

출력:

No such key present

TryGetValue()를 사용하여 C#에서 사전 키의 존재 여부 확인

다음을 수행하면:

double getval = 0.0;
if (!students.TryGetValue(104, out getval)) {
  Console.WriteLine("No such key present");
}

이는 다음과 같이 출력을 반환하는 경향이 있습니다.

No such key present

TryGetValue()는 키가 있는 경우 해당 값을 가져오는 경향이 있습니다. 값은 두 번째 매개변수에서 얻습니다.

따라서 out 키워드와 함께 전송됩니다. 그리고 이 값을 얻기 위한 변수는 getval인 범위 앞에 선언됩니다.

이러한 다양한 방법에 대한 전체 코드는 아래에 포함되어 있습니다.

using System;
using System.Collections.Generic;
using System.Text;

namespace jinlku_console {
  class coder {
    static void Main(String[] args) {
      Dictionary<int, double> students = new Dictionary<int, double>();
      students[101] = 3.22;
      students[102] = 3.44;
      students[103] = 2.98;

      // TRY CATCH BLOCK
      try {
        Console.WriteLine(students[104].ToString());
      } catch (Exception e) {
        Console.WriteLine("No such key present");
      }

      // CONTAINS KEY METHOD
      if (!students.ContainsKey(104)) {
        Console.WriteLine("No such key present");
      }

      // TRYGETVALUE

      double getval = 0.0;
      if (!students.TryGetValue(104, out getval)) {
        Console.WriteLine("No such key present");
      }
    }
  }
}
작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - Csharp Dictionary