Ich habe persönlich "" gesehen, was zweimal zu (geringfügigen) Problemen führte. Einmal war dies auf einen Fehler eines Junior-Entwicklers zurückzuführen, der neu in der teambasierten Programmierung war, und der andere war ein einfacher Tippfehler, aber die Tatsache ist die Verwendung von string.Empty hätte beide Probleme vermieden.
Ja, dies ist in hohem Maße ein Urteilsspruch, aber wenn eine Sprache Ihnen mehrere Möglichkeiten bietet, Dinge zu tun, neige ich dazu, mich zu derjenigen zu neigen, die die größte Compiler-Kontrolle und die stärkste Durchsetzung während der Kompilierungszeit hat. Das ist nicht "". Es geht darum, bestimmte Absichten auszudrücken.
Wenn Sie string.EMpty oder Strng.Empty eingeben, teilt Ihnen der Compiler mit, dass Sie es falsch gemacht haben. Sofort. Es wird einfach nicht kompiliert. Als Entwickler zitieren Sie bestimmte Absicht, die der Compiler (oder ein anderer Entwickler) in keiner Weise falsch interpretieren kann, und wenn Sie es falsch machen, können Sie keinen Fehler erstellen.
Wenn Sie "" eingeben, wenn Sie "" meinen, oder umgekehrt, macht der Compiler glücklich, was Sie ihm gesagt haben. Ein anderer Entwickler kann möglicherweise Ihre spezifische Absicht ermitteln oder nicht. Fehler erstellt.
Lange vor string.Empty habe ich eine Standardbibliothek verwendet, die die Konstante EMPTY_STRING definiert hat. Wir verwenden diese Konstante weiterhin in case-Anweisungen, in denen string.Empty nicht zulässig ist.
Wenn immer möglich, lassen Sie den Compiler für Sie arbeiten und beseitigen Sie die Möglichkeit menschlicher Fehler, egal wie klein sie sind. IMO, dies übertrumpft "Lesbarkeit", wie andere zitiert haben.
Spezifität und Durchsetzung der Kompilierungszeit. Es ist was zum Abendessen.