修改List.Contains行为

Lan*_*lot 8 c# contains list icomparable icomparer

我有一个List<MyObj>class MyObj : IComparable.我按照接口CompareToMyObj类中编写了方法IComparable,但是当我使用List<MyObj>.Contains(myObjInstance)false时,它应该返回它true.

我不确定我是否理解我需要继续确保List在调用then Contains函数时使用我的自定义比较方法.

这是我的compareTo实现:

    #region IComparable Members

    public int CompareTo(object obj)
    {
        MyObj myObj = (MyObj)obj;
        return String.Compare(this.Symbol, myObj.Symbol, true);
    }

    #endregion
Run Code Online (Sandbox Code Playgroud)

请注意,Symbol属性是一个字符串.

为了澄清我已经在compareTo方法中设置了一个停止点,它甚至没有进入那里.

有人试过吗?

谢谢.

Fre*_*örk 23

找出您的CompareTo方法是否被调用的绝对最简单的方法是在其中设置断点并按F5运行您的程序.但我认为,List<T>.Contains寻找进行IEquatable<T>比较的界面.


svi*_*ick 5

根据该文档List<T>.Contains,它使用您的任何实施IEquatable的接口或object.Equals,你可以重写为好.