Pregunta

Tengo un List<MyObj> con el class MyObj : IComparable. Escribí el método CompareTo en el MyObj clase por el IComparable interfaz, pero cuando se utiliza la List<MyObj>.Contains(myObjInstance) vuelve false cuando debería ser true.

No estoy seguro de que estoy entender cómo tengo que proceder a asegurarse de que el List utiliza mi método comparación personalizada al llamar a continuación, la función Contains.

Aquí está mi aplicación compareTo:

    #region IComparable Members

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

    #endregion

Tenga en cuenta la propiedad del símbolo es una cadena.

Para aclarar He puesto un punto de parada en ese método compareTo y que ni siquiera ir allí.

Cualquier persona que ha intentado alguna vez?

Gracias.

¿Fue útil?

Solución

La manera más fácil absoluta para averiguar si su método se llama CompareTo es establecer un punto de interrupción en ella y pulsa F5 para ejecutar el programa. Pero yo creo que List<T>.Contains busca la interfaz IEquatable<T> hacer la comparación.

scroll top