Kann nicht String.Empty als Standardwert für einen optionalen Parameter verwenden

Ich leseEffective C # von Bill Wagner. ImItem 14 - Doppelte Initialisierungslogik minimieren zeigt er das folgende Beispiel für die Verwendung der neuen Funktion für optionale Parameter in einem Konstruktor:

public MyClass(int initialCount = 0, string name = "")

Hinweis, dass er verwendet"" Anstatt vonstring.Empty.
Er kommentiert:

Sie werden [in einem obigen Beispiel] bemerken, dass der zweite Konstruktor "" für den Standardwert im @ angegeben haNam -Parameter, anstatt der üblichenstring.Empty. Das ist, weilstring.Empty ist keine Konstante zur Kompilierungszeit. Es ist eine statische Eigenschaft, die in der Zeichenfolgenklasse definiert ist. Da es sich nicht um eine Kompilierkonstante handelt, können Sie sie nicht als Standardwert für einen Parameter verwenden.

Wenn wir das @ nicht verwenden könnstring.Empty static in allen Situationen, macht das nicht den Zweck zunichte? Ich dachte, wir würden es nutzen, um sicherzugehen, dass wir ein systemunabhängiges Mittel haben, um auf die leere Zeichenfolge zu verweisen. Ist mein Verständnis falsch? Vielen Dank

AKTUALISIERE
Nur ein Follow-up-Kommentar. Laut MSDN:

eder optionale Parameter hat einen Standardwert als Teil seiner Definition. Wenn für diesen Parameter kein Argument gesendet wird, wird der Standardwert verwendet.Standardwerte müssen Konstanten sein.

Dann können wir @ nicht verwendSystem.Environment.NewLine entweder oder verwenden Sie neu instanziierte Objekte als Standardwerte. Ich habe VS2010 noch nicht verwendet, und das ist enttäuschend!

Antworten auf die Frage(16)

Ihre Antwort auf die Frage