2008-12-02 9 views

Respuesta

1

En la CLI, el decimal no es un tipo nativo como Int32, String y otros. Supongo que C# usa Compare behind the scenes para implementar los operadores de comparación.

Además, puede pasar Comparar como un parámetro a una rutina de clasificación sin crear un delegado, reduciendo los niveles de anidación de métodos dentro de la ordenación.

Eso es un par de cosas fuera de mi cabeza.

+0

No, C# utilizará las sobrecargas del operador: para eso están. Además, si pasa Compare como parámetro, * está * creando un delegado, pero tiene razón en que no necesita escribir usted mismo la implementación del delegado. –

+0

Entonces usa bool [mscorlib] System.Decimal :: op_LessThan (valuetype [mscorlib] System.Decimal, valuetype [mscorlib] System.Decimal), etc.? OK, entiendo a qué te refieres. –

5

Por un lado, hace que sea muy fácil construir una instancia de delegado Comparison<decimal>:

Comparison<decimal> foo = decimal.Compare; 

Esto es útil para pasar a cosas que tienen delegados de comparación arbitrarias.

También puede ser útil si está utilizando un lenguaje que no admite operadores sobrecargados. Esa es la razón por la que se recomienda no exponer la funcionalidad que es solo compatible con operadores.

4

Decimal.Compare devuelve un número firmado que indica los valores relativos de dos valores decimales. Un uso típico de esto es para clasificar.

Operadores como>,> =, < devuelven un valor booleano.

Se utilizan en diferentes situaciones.

Cuestiones relacionadas