Mi opinión en él es que están ahí para ayudar a evitar números mágicos.
Los números mágicos son básicamente en cualquier parte de su código que tiene un número aribtrary flotando alrededor. Por ejemplo:
int i = 32;
Esto es problemático en el sentido de que nadie puede decir qué i es conseguir crear a 32, o lo que significa 32, o si debe ser de 32 en absoluto. Es mágico y misterioso.
En una línea similar, que verá a menudo código que hace esto
int i = 0;
int z = -1;
Por qué están siendo puesto a 0 y -1? ¿Es esto solo una coincidencia? ¿Significan algo? ¿Quién sabe?
Mientras Decimal.One
, Decimal.Zero
, etc no te dicen lo que significan los valores en el contexto de su aplicación (tal vez cero significa "perdido", etc.), que no usted que el valor se ha establecido deliberadamente decir, y probablemente tenga algún significado.
Aunque no es perfecto, esto es mucho mejor que no le dice nada en absoluto :-)
Nota Es no para la optimización. Observar este código C#:
public static Decimal d = 0M;
public static Decimal dZero = Decimal.Zero;
Al mirar el código de bytes generada usando ildasm, ambas opciones resultan en idéntica MSIL. System.Decimal
es un tipo de valor, por lo que Decimal.Zero
no es más "óptimo" que simplemente usar un valor literal.
No creo que estas respuestas explican adecuadamente por qué estos valores están ahí. Estoy escuchando algunos efectos y el uso, pero lo que estoy buscando es ¿POR QUÉ fue diseñado en el idioma, y por qué no está allí en Float, por ejemplo, o Int32 ... – Jasmine