J'ai exécuté StyleCop sur mon code et l'une des recommandations SA1122 est d'utiliser string.Empty plutôt que "" lors de l'attribution d'une chaîne vide à une valeur.
Ma question est de savoir pourquoi cela est considéré comme la meilleure pratique. Ou est-ce considéré comme la meilleure pratique? Je suppose qu'il n'y a pas de différence de compilation entre les deux déclarations, donc je ne peux que penser que c'est une chose de lisibilité?
""
string.Empty
Réponses:
Une raison valable est qu'il indique clairement qu'il ne s'agit pas d'une faute de frappe ou d'un espace réservé, que vous vouliez vraiment utiliser la chaîne vide ici.
Je ne sais pas si c'est considéré comme une "meilleure pratique".
la source
J'imagine qu'il y a deux raisons, une pour la lisibilité et deux pour une amélioration mineure des performances.
La lisibilité est facile: il est beaucoup plus rapide à repérer
string.Empty
que""
. La recherchestring.Empty
sera également généralement plus facile et peut-être plus précise que la recherche du littéral. Cela clarifie également l'intention: vous n'avez pas simplement fait une faute de frappe ou oublié de terminer quelque chose, vous vouliez vraiment une chaîne vide.La raison de la performance est due à l' internement . Vous voyez, le runtime conserve un tableau des chaînes précédemment utilisées afin qu'il puisse faire rapidement des comparaisons de chaînes sans faire de vérification caractère par caractère.
string.Empty
est déjà une référence internée à l'""
endroit où la saisie du littéral peut ne pas vous donner la version interne, provoquant ainsi une légère baisse des performances.la source
string.Empty
gagne dans un cas vraiment coin, ce qui peut conduire à un bug magique et vraiment difficile à déboguer:S'il y a un espace de largeur zéro dans
""
.la source
Selon une documentation que j'ai trouvée, cela a à voir avec ce qui est émis par le compilateur.
Une recherche rapide révèle: http://stylecop.soyuz5.com/SA1122.html
Pourquoi il est classé sous "Règles de lisibilité" avec cette description est déroutant.
la source