Dictionary는 Key, Value Pair로 값이 저장되는 Generic Collection이다.
보통 Key 값을 String이나 int로 사용하던데, 클래스로 지정했더니 new로 초기화한 인스턴스와 딕셔너리에 포함되어있는 인스턴스가 달라서 Combines나 색인 접근이 불가능한 문제점이 발생했다.
위와 같은 문제가 발생했을 때는 인스턴스가 동일한 객체일 때 언제나 동일한 Equals 연산 및 해쉬를 반환해야 한다.
해결방법은 GetHashCode 함수와 Equals 함수를 오버라이딩 하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public override bool Equals(object obj) { if (this.GetType() == obj.GetType()) return true; return base.Equals(obj); } public override int GetHashCode() { return this.GetType().GetHashCode(); //return base.GetHashCode(); } | cs |
'개발새발 > C#' 카테고리의 다른 글
[C#/WPF] 숫자만 입력되는 소수점 TextBox (0) | 2019.07.02 |
---|---|
[C#] SaveFileDialog을 이용하여 Excel파일로 DataTable 저장하기. (0) | 2019.04.09 |
[C#/WPF] Extended WPF Toolkit 사용하기. (0) | 2019.04.04 |
[C#/WPF] TabControl ItemsSource 바인딩 시 ViewModel을 상속받지 않고 생성자를 호출하는 문제 해결. (0) | 2019.04.01 |