Deux points d'interrogation ('??') vs si lors de l'attribution des mêmes var

Se référant à la suite de SE répondre.

Lors de l'écriture de

A = A ?? B;

c'est le même que

if( null != A )
    A = A;
else
    A = B;

Est-ce à dire que

if( null == A ) A = B;

serait préférable, performance sage?

Ou puis-je supposer que le compilateur optimise le code, lorsque le même objet est dans le ?? notation?

Oui, le gain de performance est ici inexistante.
Écrire les deux versions, la compilation, l'utilisation ILDasm ou dotPeek pour voir si il y a une différence dans le code généré.
Moins de marques de lisibilité. Vérifier si une valeur null est égal à rien n'a pas vraiment de sens. Peut-être juste une préférence, mais j'ai toujours utiliser if (A != null). Vous effectuez un contrôle sur Une, pas la valeur null.
L'ordonnance d'une condition est surtout une préférence. Je trouve ça plus lisible de mettre la valeur de comparaison sur la gauche, comme il met l'accent sur le résultat final. L'habitude est ancienne, et les tiges de codage en C et C++ où '=' pourrait accidentellement attribuer tout en comparant, en C#, il n'est plus pertinent, mais je trouve la comparaison plus lisible. Si vous avez tout intérêt en C/C++ découvrez la toujours pertinente, Efficace C++ livre (rads.stackoverflow.com/amzn/click/0321334876), voir aussi la discussion suivante: stackoverflow.com/questions/6883646/obj-null-vs-null-obj

OriginalL'auteur Lockszmith | 2012-07-10