문제

나는있다 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)은 대부분의 일반 객체에 대해 동일하게 사용합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top