I have a List
with the class MyObj : IComparable
. I wrote the method CompareTo
in the MyObj
class per the
According to the documentation for List<T>.Contains
, it uses either your implementation of IEquatable
interface or object.Equals
, that you can override as well.
Did you try overriding the Equals method?
List<T>
, according to reflector, uses EqualityComparer<T>
to check for containment, and the default implementation (ObjectEqualityComparer) uses Equals for most normal objects.
The absolute easiest way to find out whether your CompareTo method is called is to set a breakpoint in it and hit F5 to run your program. But I believe that List<T>.Contains
looks for the IEquatable<T> interface for making the comparison.