我与List<MyObj>一个class MyObj : IComparable。我写的方法CompareTo以每MyObj接口IComparable类,但是当我使用List<MyObj>.Contains(myObjInstance)返回false时应该true

我不知道我的理解我需要如何进行,以确保调用然后List功能,当Contains使用我的自定义比较法。

下面是我的compareTo实现:

    #region IComparable Members

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

    #endregion

请注意符号属性是一个字符串。

要澄清,我已经把一个停止点在compareTo方法,它甚至不进去。

任何人曾经尝试过?

感谢。

有帮助吗?

解决方案

要找出你的CompareTo方法是否被称为绝对最简单的方法是设置中有一个断点,然后按F5运行程序。但我相信,List<T>.Contains将查找 IEquatable<T> 以作比较接口。

其他提示

根据上述List<T>.Contains文档,它使用或者您的实现IEquatable接口或object.Equals的,即可以重写为好。

你尝试重写Equals方法?

List<T>,根据反射器,用途EqualityComparer<T>检查遏制,并且默认的实现(ObjectEqualityComparer)使用的Equals对大多数正常的对象。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top