J'ai une méthode d'une ligne qui résout une chaîne nulle à string.Empty que je pensais être utile comme méthode d'extension - mais je ne trouve pas de moyen utile de le faire. La seule façon de le voir utile est une méthode statique sur la classe de chaînes, car il est évident qu'elle ne peut pas être attribuée à une instance car l'instance est nulle, ce qui provoque une erreur de compilateur. [Edit: l'erreur du compilateur était due à une variable non initialisée, que j'ai mal interprétée]Est-ce que .NET a un moyen de résoudre une chaîne nulle en String.Empty?
J'ai pensé à l'ajouter à une classe d'aide mais cela ajoute juste une complexité inutile du point de vue de la découvrabilité.
Donc, cette question est en deux parties, je suppose:
- Est-ce que le framework .NET ont construit dans le moyen de résoudre une chaîne vide à string.Empty qui est de notoriété publique que j'ai manqué quelque part le long de la façon?
- Si ce n'est pas le cas, quelqu'un connaît-il un moyen d'ajouter cette méthode en tant qu'extension statique de la classe de chaînes?
Vive à l'avance
Edit:
D'accord, je pense que j'aurais été un peu plus clair - je suis déjà bien au courant de coallescing nulle et j'utilisais ce dans un endroit où j'ai une douzaine de cordes inspectées pour le calcul d'un code de hachage. Comme vous pouvez l'imaginer, 12 lignes de code se suivant étroitement et contenant la syntaxe null coallescing est une horreur, donc j'ai déplacé l'opération null coallescing sur une méthode pour faciliter les choses sur les yeux. Ce qui est parfait, cependant, ce serait une extension parfaite à l'objet chaîne:
int hashcode =
FirstValue.ResolveNull().GetHashCode()^
SecondValue.ResolveNull().GetHashCode()^
...
plus d'une douzaine de lignes est beaucoup plus facile à lire que:
int hashcode =
(FirstValue ?? String.Empty).GetHashCode()^
(SecondValue ?? String.Empty).GetHashCode()^
...
je courais dans les problèmes de compilateur lorsque Je ne déclare explicitement mes valeurs de chaîne comme nulle mais comptais sur l'implicite:
string s;
Si toutefois, vous définissez explicitement:
string s = null;
Vous pouvez appeler facilement:
s.ResolveNull();
Merci à tous pour vos commentaires.
Basé sur les 6 réponses dans les 30 secondes, yep, les connaissances communes. : D –
lol - ce n'était pas que j'ai raté coallescing non plus, je le savais, avait déjà écrit comme laid pour ce but particulier. Je devrais avoir été plus précis avec ma question: D – BenAlabaster
Je pense que le code qui ne peut pas gérer une chaîne nulle est moche: -P –