Warum kann ich string.Empty nicht als optionalen Parameter im Gegensatz zu leeren Anführungszeichen verwenden? [Duplikat]

7

Ich verfeinere meinen Code und stelle fest, dass ich an einigen Stellen optionale Parameter mit dem Standardwert einer leeren Zeichenfolge hatte. Ich änderte das zu einem Standardwert von der Klasse für leere Schnur und rate was! Anscheinend gibt es einen Unterschied zwischen leeren Anführungszeichen und string.Empty . Was die Ente?! (Tippfehler gemeint)

%Vor%

Kann mir jemand erklären, warum die Ente Khaboom arbeitet und Bazinga nicht?!

Die Fehlermeldung wimmert dies:

  

Der Standardparameterwert für 'Parameter' muss eine Kompilierzeitkonstante sein.

Nun ... Es ist !

    
Konrad Viltersten 01.06.2014, 22:03
quelle

3 Antworten

13

Empty ist wie folgt definiert:

%Vor%

Es ist keine Konstante. Es ist ein readonly Feld.

    
spender 01.06.2014, 22:07
quelle
4
  

Ein Standardwert muss einer der folgenden Arten von Ausdrücken sein:

     
  • ein konstanter Ausdruck;
  •   
  • ein Ausdruck der Form new ValType (), wobei ValType ein Werttyp ist, z. B. eine enum oder eine struct;
  •   
  • ein Ausdruck des Formularstandards (ValType), wobei ValType ein Werttyp ist.
  •   

Da string.Empty keines dieser Dinge ist, ist es nicht erlaubt.

Ссылка

    
Jeroen Vannevel 01.06.2014 22:06
quelle
2

Standardparameterwerte müssen Konstanten sein, String.Empty ist jedoch ein schreibgeschütztes Feld.

    
Richard Szalay 01.06.2014 22:07
quelle

Tags und Links