2012-12-14 3 views
1

내가 클래스를해당 오브젝트의 사전이 작동하지 않거나 잘못 되었습니까?

Public Class Person 
Public Name As String 
Public Rank As String 
End Class 

이 그리고 내가 키 이러한 클래스를 사용하는 사전을 가지고 있다고 할 수 있습니다. 두 개의 Person 개체가 있으며 이름과 순위에 각각 동일한 문자열 값이 있지만 동일한 키로 취급되지 않습니다. 사전을 이런 방식으로 사용할 수 없습니까?

답변

3

사전은 기본적으로 사용자가 만든 클래스를 비교하는 방법을 알지 못합니다. 이 아니기 때문에은 클래스 내의 모든 필드를 비교하기 만하면됩니다. remarks section for Dictionary<TKey,TValue>에서 언급 한 바와 같이 : 타입 TKEY이 System.IEquatable 제네릭 인터페이스를 구현

경우, 기본 같음 비교 구현 것을 사용합니다.

귀하의 사람 클래스는 두 개의 인스턴스가 동일하게 처리 할 필요가있는 경우에 true를 돌려 것이다 Equals(Person) 방법, 구성되는 IEquatable<T> 인터페이스를 구현해야합니다. 또한,로는 remarks for IEquatable<T>에서 언급 : 당신이 IEquatable을 구현하는 경우, 당신은 또한 자신의 행동이 IEquatable<T>.Equals 방법의 것과 일치 그래서 Object.Equals(Object)GetHashCode의 기본 클래스 구현을 오버라이드 (override) 할 필요가

.

관련 문제