Mon opinion c'est qu'ils sont là pour aider à éviter les chiffres magiques.
Les nombres magiques sont en fait partout dans votre code où vous avez un nombre arbitraire qui flotte. Par exemple :
int i = 32;
C'est problématique dans le sens où personne ne peut dire por qué i est réglé sur 32, ou ce que 32 signifie, ou si cela devrait être 32 du tout. C'est magique et mystérieux.
Dans le même ordre d'idées, je vois souvent du code qui fait ceci
int i = 0;
int z = -1;
Pourquoi sont-elles définies sur 0 et -1 ? Est-ce une simple coïncidence ? Ont-ils une signification ? Qui sait ?
Alors que Decimal.One
, Decimal.Zero
etc. ne vous disent pas ce que les valeurs signifient dans le contexte de votre application (peut-être que zéro signifie "manquant", etc.). fait vous indiquent que la valeur a été délibérément fixée, et qu'elle a probablement une certaine signification.
Même si ce n'est pas parfait, c'est bien mieux que de ne rien dire du tout :-)
Note C'est no pour l'optimisation. Observez ce code C# :
public static Decimal d = 0M;
public static Decimal dZero = Decimal.Zero;
En regardant le bytecode généré à l'aide d'ildasm, les deux options donnent comme résultat identique MSIL. System.Decimal
est un type de valeur, donc Decimal.Zero
n'est pas plus "optimale" que l'utilisation d'une valeur littérale.
3 votes
Je ne pense pas que ces réponses expliquent de manière adéquate pourquoi ces valeurs sont présentes. J'entends certains effets et usages, mais ce que je cherche, c'est POURQUOI cela a été conçu dans le langage, et pourquoi ce n'est pas là dans Float, par exemple, ou Int32...
0 votes
Ils aident les compilateurs à générer des assemblages plus compacts. Toujours utilisé aujourd'hui