Saltar al contenido

¿Cómo implementar la interfaz IComparable?

Nuestros programadores estrellas agotaron sus depósitos de café, en su búsqueda día y noche por la respuesta, hasta que Joaquín halló la respuesta en Gitea por lo tanto hoy la compartimos con nosotros.

Solución:

no debes definir IComparable tú mismo. Ya está definido. Más bien, necesitas implementarIComparable en tu BankAccount clase.

Donde definiste el class BankAccountasegúrese de que implemente el IComparable interfaz. A continuación, escribir BankAccount.CompareTo para comparar los saldos de los dos objetos.

public class BankAccount : IComparable

    [...]

    public int CompareTo(BankAccount that)
    
        if (this.Balance <  that.Balance) return -1;
        if (this.Balance == that.Balance) return 0;
        return 1;
    


Editar para mostrar la solución de Jeffrey L Whitledge de los comentarios:

public class BankAccount : IComparable

    [...]

    public int CompareTo(BankAccount that)
    
        return this.Balance.CompareTo(that.Balance);
    

Quieres destructivamente ordenar el array? Es decir, ¿desea cambiar realmente el orden de los elementos en el array? ¿O simplemente quiere una lista de los artículos en un orden particular, sin destruir el orden original?

Sugeriría que casi siempre es mejor hacer lo último. Considere usar LINQ para un pedido no destructivo. (Y considere usar un nombre de variable más significativo que "a").

BankAccount[] bankAccounts =  whatever ;
var sortedByBalance = from bankAccount in bankAccounts 
                      orderby bankAccount.Balance 
                      select bankAccount;
Display(sortedByBalance);

IComparable ya existe en .NET con esta definición de CompareTo

int CompareTo(Object obj)

No se supone que debe crear la interfaz, se supone que debe implementarla.

public class BankAccount : IComparable 

    int CompareTo(Object obj) 
           // return Less than zero if this object 
           // is less than the object specified by the CompareTo method.

           // return Zero if this object is equal to the object 
           // specified by the CompareTo method.

           // return Greater than zero if this object is greater than 
           // the object specified by the CompareTo method.
    

Si haces scroll puedes encontrar las anotaciones de otros sys admins, tú además eres capaz insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *