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 BankAccount
asegú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.