반응형
딕셔너리란??
C# 딕셔너리는 키-값 쌍의 모음입니다. 딕셔너리의 각 키는 고유해야 하며 키를 사용하여 해당 값을 검색할 수 있습니다. 딕셔너리는 값을 특정 키와 연결해야 할 때 유용합니다. Dictionary 클래스는 System.Collections.Generic 네임스페이스의 일부이며 컬렉션을 조작하는 데 사용할 수 있는 몇 가지 기본 함수를 제공합니다.
딕셔너리 생성
C#에서 딕셔너리를 만들려면 Dictionary<TKey, TValue> 클래스를 사용해야 합니다. TKey 및 TValue 매개변수는 각각 키와 값의 데이터 유형을 지정합니다. 다음은 정수 및 문자열의 딕셔너리를 만드는 방법의 예입니다.
Dictionary<int, string> myDictionary = new Dictionary<int, string>();
정수 키와 문자열 값이 있는 빈 딕셔너리를 생성했습니다.
기본 내장 함수
- Add
요소를 추가하려면 Add() 메서드를 사용하면 됩니다. 딕셔너리에 키-값 쌍을 추가합니다. 키가 이미 존재하면 예외가 발생합니다.
myDictionary.Add(1, "One"); myDictionary.Add(2, "Two"); myDictionary.Add(3, "Three");
- Remove
딕셔너리에서 요소를 제거하려면 Remove() 메서드를 사용하면 됩니다. Remove() 메서드는 키를 인수로 사용하고 딕셔너리에서 해당 키-값 쌍을 제거합니다.
위에서 추가한 키가 1인 요소가 제거되었습니다.myDictionary.Remove(1);
- TryGetValue
TryGetValue 메서드는 키를 기반으로 딕셔너리에서 값을 검색할 수 있는 C# 딕셔너리의 유용한 함수입니다. 키는 TryGetValue 메서드에 매개변수로 전달되며 딕셔너리에 키가 존재하면 해당 값이 반환됩니다. 그러나 딕셔너리에 키가 존재하지 않는 경우 메서드는 일반 인덱서 메서드와 달리 false를 반환하고 예외를 throw하지 않습니다.
bool TryGetValue(TKey key, out TValue value); //key: 검색할 요소의 키입니다. //value: 이 메서드가 반환될 때 키가 발견되면 지정된 키와 관련된 값을 포함합니다. 그렇지 않으면 값 매개변수 유형의 기본값입니다.
TryGetValue() 메서드는 딕셔너리에서 키를 찾았는지 여부를 bool값을 반환합니다.
string dict if (myDictionary.TryGetValue(4, out dict) { Console.WriteLine(dict); } else { Console.WriteLine("Not Found"); }
myDictionary안에 키가 4인 요소가 없으므로 Not Found가 출력됩니다.
TryGetValue() 메서드는 예외가 발생할 위험 없이 해당 키를 기반으로 값을 검색할 수 있어 코드 성능을 향상시킬 수 있습니다.
- ContainsKey
딕셔너리에 키가 있는지 확인하려면 ContainsKey() 메서드를 사용할 수 있습니다. ContainsKey() 메서드는 키를 인수로 사용하고 키가 있으면 true를 반환하고, 그렇지 않으면 false를 반환합니다.
if (myDictionary.ContainsKey(2)) { Console.WriteLine("Key exists!"); }
myDictionary에 키가 2인 요소가 있으므로 "Key exists!"가 출력이 될 것입니다.
- ContainsValue
ContainsValue 메서드는 지정된 값이 딕셔너리에 있는지 확인합니다. 값을 입력 매개변수로 사용하고 값이 딕셔너리에 있는지 여부를 나타내는 bool 값을 반환합니다.
bool ContainsValue(TValue value);
- Count
Count 속성은 딕셔너리의 요소(키-값) 수를 반환합니다.
딕셔너리의 한계
딕셔너리는 강력한 데이터 구조이지만 몇 가지 제한 사항이 있습니다. 주요 제한 사항은 스레드로부터 안전하지 않다는 것입니다. 즉, 여러 스레드에서 동시에 액세스할 수 없습니다. 여러 스레드에서 딕셔너리에 액세스해야 하는 경우 대신 ConcurrentDictionary 클래스를 사용해야 합니다.
또 다른 제한 사항은 딕셔너리는 해당 요소의 순서를 유지하지 않는다는 것입니다. 요소의 순서를 유지해야 하는 경우 대신 OrderedDictionary 클래스를 사용해야 합니다.
'C#' 카테고리의 다른 글
C# 객체지향 다형성 : new, virtual, override, sealed (0) | 2023.03.30 |
---|---|
C# 정규표현식 (0) | 2023.03.29 |
C# Delegate : 대리자 (0) | 2023.03.28 |
C# Dictionary ContainsKey() vs TryGetValue() (0) | 2023.03.28 |
C# 람다 식 사용 (0) | 2023.03.14 |