Ich habe StyleCop über meinen Code ausgeführt, und eine der Empfehlungen von SA1122 lautet, string.Empty anstelle von "" zu verwenden, wenn einem Wert ein leerer String zugewiesen wird.
Meine Frage ist, warum dies als Best Practice angesehen wird. Oder wird dies als Best Practice angesehen? Ich gehe davon aus, dass zwischen den beiden Anweisungen kein Compilerunterschied besteht, sodass ich nur davon ausgehen kann, dass es sich um eine lesbare Sache handelt.
""
aber nichtstring.Empty
Antworten:
Ein triftiger Grund ist, dass deutlich wird, dass es sich nicht um einen Tippfehler oder Platzhalter handelt, sondern dass Sie eigentlich die leere Zeichenfolge hier verwenden wollten.
Ich weiß nicht, ob es sich um "Best Practice" handelt.
quelle
Ich würde mir vorstellen, dass es zwei Gründe gibt, einen für die Lesbarkeit und zwei für eine geringfügige Leistungssteigerung.
Die Lesbarkeit ist einfach: Es ist viel schneller zu erkennen
string.Empty
als""
. Das Suchen nachstring.Empty
wird im Allgemeinen auch einfacher und möglicherweise genauer sein als das Suchen nach dem Literal. Es verdeutlicht auch die Absicht: Sie haben nicht nur einen Tippfehler gemacht oder vergessen, etwas zu beenden, Sie wollten wirklich eine leere Zeichenfolge.Der Leistungsgrund ist auf Internierung zurückzuführen . Sie sehen, die Laufzeitumgebung führt eine Tabelle mit zuvor verwendeten Zeichenfolgen, damit Zeichenfolgen schnell verglichen werden können, ohne dass eine zeichenweise Prüfung durchgeführt werden muss.
string.Empty
ist bereits ein interner Verweis darauf,""
wo-wie die Eingabe des Literal möglicherweise nicht die internierte Version ergibt, was zu einem leichten Leistungseinbruch führt.quelle
string.Empty
gewinnt in einem wirklich schwierigen Fall, der zu einem magischen Fehler führen kann und schwer zu debuggen ist:Wenn es einen Nullbreitenraum in gibt
""
.quelle
Laut einer Dokumentation, die ich gefunden habe, hat es damit zu tun, was der Compiler ausgibt.
Eine schnelle Suche zeigt: http://stylecop.soyuz5.com/SA1122.html
Warum es mit dieser Beschreibung unter "Lesbarkeitsregeln" abgelegt wird, ist rätselhaft.
quelle