Nicht nullfähige Zeichenfolge Initialisiert als Null

7

Ich versuche zu verstehen, warum eine nicht nullbare Zeichenfolge auf null initialisiert wird, anstatt auf eine leere Zeichenfolge. Zum Beispiel:

%Vor%

Bin ich verrückt zu denken, dass der Wert einer nicht nullbaren Zeichenfolge standardmäßig auf String.Empty gesetzt werden sollte? Gibt es eine Standardmethode, um dieses Verhalten zu erzwingen, abgesehen von einem benutzerdefinierten Getter?

    
James Hill 19.10.2011, 13:48
quelle

4 Antworten

24

Es gibt keine "nicht nullbare Zeichenfolge".

String ist ein Referenztyp, daher ist sein Standardwert in der Tat ein Nullwert.

Sie könnten das Problem umgehen, indem Sie den Wert im Konstruktor für Ihre Klasse (foo) auf String.Empty setzen.

    
Jamiec 19.10.2011, 13:50
quelle
11

Eine Zeichenfolge ist ein Referenztyp, sie ist immer nullfähig.

    
millimoose 19.10.2011 13:49
quelle
3

String ist Referenztyp - Werte werden standardmäßig auf null initialisiert.

Sie können Zeichenfolgen im Konstruktor in string.Empty initialisieren, und es wird empfohlen, dies zu tun, weil:

  • null value bedeutet "Ich weiß nicht, was der Wert ist"
  • %Code% bedeutet "Wert ist leer" oder "Wert existiert nicht".

Daher sollten fast alle String-Eigenschaften (by you) auf string.Empty value initialisiert sein. Versuchen Sie, etwas über "Nullobjektmuster" zu lesen. Die Programmierung nach diesem Prinzip macht deutlich lesbareren und fehlerfreien Code.

    
Pavel Hodek 19.10.2011 14:10
quelle
0

Da Sie Eigenschaften verwenden, um die Zeichenfolgenwerte abzurufen, besteht eine andere Möglichkeit darin, string.Empty zurückzugeben, wenn sie tatsächlich null ist.

%Vor%

Eine viel bessere Lösung wäre, die Zeichenfolge zu string.Empty zu initialisieren (wenn dies das erwartete Verhalten ist). Sie können dies in C # 6+ wie folgt tun:

%Vor%

Auf diese Weise ist es eine einmalige Initialisierung und keine Überprüfung jeder Anfrage.

    
Arkiliknam 23.07.2013 10:37
quelle

Tags und Links