ModifyList.ContainsBehavior我有一个List,classMyObj:IComparable。我根据IComparable接口在MyObj类中编写了CompareTo方法,但是当我使用List.Contains(myObjInstance)时,它应该为true时返回false。我不确定我是否理解如何确保List在调用thenContains函数时使用我的自定义比较方法。这是我的compareTo实现:#regionIComparableMemberspublicintCompareTo(objectobj){MyObjmyObj=(MyObj)obj;返回String.Compare(this.Symbol,myObj.Symbol,true);}#endregion请注意,Symbol属性是一个字符串。为了澄清,我停止了compareTo方法,它甚至没有去那里。有人试过吗?谢谢。查明您的CompareTo方法是否被调用的绝对最简单的方法是在其中设置一个断点,然后按F5运行您的程序。但我相信List.Contains会查找IEquatable接口进行比较。根据List.Contains的文档,它使用IEquatable接口或IEquatable的实现,您也可以覆盖它。您是否尝试过重写Equals方法?根据反射器,List使用EqualityComparer检查包含,默认实现(ObjectEqualityComparer)对大多数普通对象使用Equals。以上就是C#学习教程:修改List.Contains行为分享。如果对你有用,需要进一步了解《C#学习教程》,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
