목록을 수정하십시오. 동작을 포함합니다
-
21-08-2019 - |
문제
나는있다 List<MyObj>
이랑 class MyObj : IComparable
. 나는 그 방법을 썼다 CompareTo
에서 MyObj
수업 당 IComparable
인터페이스, 그러나 내가 사용할 때 List<MyObj>.Contains(myObjInstance)
돌아옵니다 false
해야 할 때 true
.
나는 내가 어떻게 진행 해야하는지 이해하지 못한다. List
그런 다음 호출 할 때 사용자 정의 비교 방법을 사용합니다 Contains
기능.
내 비교 구현은 다음과 같습니다.
#region IComparable Members
public int CompareTo(object obj)
{
MyObj myObj = (MyObj)obj;
return String.Compare(this.Symbol, myObj.Symbol, true);
}
#endregion
참고 기호 속성은 문자열입니다.
명확히하기 위해 나는 그 비교 방법에 중지 지점을 두었고 거기에도 들어 가지 않습니다.
누구든지 그것을 시도한 적이 있습니까?
감사.
해결책
비교 방법이 호출되는지 여부를 찾는 가장 쉬운 방법은 브레이크 포인트를 설정하고 F5를 치고 프로그램을 실행하는 것입니다. 그러나 나는 그것을 믿는다 List<T>.Contains
찾는다 IEquatable<T>
비교를위한 인터페이스.
다른 팁
에 따르면 선적 서류 비치 ~을 위한 List<T>.Contains
, 그것은 당신의 구현을 사용합니다 IEquatable
인터페이스 또는 object.Equals
, 당신도 무시할 수 있습니다.
Equals 방법을 재정의 했습니까?
List<T>
, 반사판에 따르면 용도 EqualityComparer<T>
격리를 확인하고 기본 구현 (ObjectequalityComparer)은 대부분의 일반 객체에 대해 동일하게 사용합니다.