quiero hacer algo como esto:¿Puedo usar el operador de fusión en enteros para encadenar CompareTo?
public override int CompareTo (Foo rhs)
{
return Bar.CompareTo(rhs.Bar) ??
Baz.CompareTo(rhs.Baz) ??
Fuz.CompareTo(rhs.Fuz) ?? 0;
}
esto no funciona como está escrito; ¿Hay alguna solución mínima para que funcione? Básicamente quiero 0 para encadenar hasta que sea distinto de cero (o al final de la cadena).
No sé la respuesta a su pregunta, pero si tres valores se pueden utilizar para determinar el valor de retorno, es posible que desee considerar el rediseño de su clase. –
@DJ 'CompareTo' está relacionado con la clasificación; eso es bastante común, en realidad, por ejemplo, ordenar por apellido, si es lo mismo, ordenar por Nombre, y si aún es igual, ordenar por algún identificador único (por ejemplo, id de la base de datos). –
@Marc Interesante, no he estado expuesto a esto antes. Veo que CompareTo es parte de la clase de IComparable. Tendré que leer más para tener algo de perspectiva. Gracias –