Tout le monde connaît au moins deux idiomes C# commun y compris l'opérateur soudent:idiomes de C# communs, y compris coalesce ?? opérateur
un singleton un:
return _staticField = _staticField ?? new SingletonConstructor();
et une chaîne un:
notNullableResult = nullable1 ?? nullable2 ?? nullable3 ?? default(someType);
il est lisible, cohérente, d'une valeur à l'aide et reconnaissable dans le code.
Mais, malheureusement, c'est tout. Parfois, il faudra élargir ou modifier. Parfois je les utilise quand je vois un cas particulier - et toujours j'hésite à l'employer parce que je ne sais pas si n'importe quel autre programmeur le lira vraiment facile.
Connaissez-vous d'autres personnes? J'aimerais avoir des usages plus spécifiques: par ex. Asp.net, EF, LINQ, n'importe quoi - où la fusion est non seulement acceptable mais remarquable.
Il me semble que toutes les utilisations de l'opérateur coalescent nul ne sont que des cas particuliers de votre " chaîne un ". –
toujours, tous les cas sont plus ou moins spéciaux ou généraux. pour moi, l'art de la programmation est d'équilibrer et de sentir la différence. coalesce est un cas particulier de 'if', n'est-ce pas? et switch-case est un spécial, alors quoi - pour les supprimer? – rudnev
Ce n'est pas comme ça que vous implémentez un singleton instancié paresseusement. Même si vous avez omis un bloc 'lock' pour des raisons de brièveté dans cette question, cela ne sert qu'à masquer le code. – Aaronaught