176 votes

?? S’unir pour chaîne vide ?

Quelque chose que je trouve moi-même fait de plus en plus de la vérification d'une chaîne vide (en "" ou nulle) et un opérateur conditionnel.

Un exemple actuel:

s.SiteNumber.IsNullOrEmpty() ? "No Number" : s.SiteNumber;

Ce n'est qu'une extension de la méthode, c'est équivalent à:

string.IsNullOrEmpty(s.SiteNumber) ? "No Number" : s.SiteNumber;

Depuis qu'il est vide et n'est pas null, ?? ne suffit pas. Un string.IsNullOrEmpty() version ?? serait la solution idéale. Je suis en train de penser, il y a une manière plus propre de le faire (je l'espère!) mais j'ai eu du mal à le trouver.

Personne ne sait d'une meilleure façon de le faire, même si c'est seulement dans .Net 4.0?

152voto

RedFilter Points 84190

C# déjà nous permet de remplacer des valeurs pour avec . Donc tous nous avons besoin est une extension qui permet de convertir une chaîne vide à `` , et puis nous l’utilisons comme ceci :

75voto

Reed Copsey Points 315315

Il n’est pas un moyen intégré pour ce faire. Vous pourriez faire votre méthode d’extension retourne une chaîne ou une valeur null, cependant, qui permettrait à l’opérateur coalescent travailler. Ce serait étrange, cependant, et personnellement, je préfère votre démarche actuelle.

Étant donné que vous utilisez déjà une méthode d’extension, pourquoi ne pas simplement faire une qui renvoie la valeur ou une valeur par défaut :

50voto

sfsr Points 236

Je sais que c’est une question ancienne - mais je cherchais une réponse et aucune de ces réponses correspondent à mon besoin ainsi que ce que j’ai fini par utiliser :

Utilisation :

16voto

Justin Morgan Points 12853

J’ai un couple d’extensions utilitaire que je souhaite utiliser :

Edit : Inspiré par la République socialiste fédérative soviétiquede réponse, je vais ajouter cette variante à ma boîte à outils à l’avenir :

6voto

Chilidog Points 51

Une méthode d’extension légèrement plus rapide que celles proposées précédemment peut-être :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X