Sie sind anders, als andere bereits geantwortet haben.
static void Main(string[] args)
{
string s1 = null;
string s2 = string.Empty;
string s3 = "";
Console.WriteLine(s1 == s2);
Console.WriteLine(s1 == s3);
Console.WriteLine(s2 == s3);
}
results:
false - since null is different from string.empty
false - since null is different from ""
true - since "" is same as string.empty
Das Problem beim Verwalten leerer Zeichenfolgen im Vergleich zu Nullzeichenfolgen wird zu einem Problem, wenn Sie es entweder in einer Einfachdatei speichern oder durch Kommunikation übertragen müssen. Daher finde ich es möglicherweise nützlich, wenn andere, die diese Seite besuchen, eine gute Lösung finden dieses besondere Problem.
Zum Speichern von Zeichenfolgen in einer Datei oder in einer Kommunikation:
Möglicherweise möchten Sie die Zeichenfolge in Bytes konvertieren.
Ich empfehle, Ihrer konvertierten Zeichenfolge 2 Segmente von Header-Bytes hinzuzufügen.
Segment 1 - Meta-Informationen, die in 1 Byte gespeichert sind und die Länge des nächsten Segments beschreiben.
Segment 2 - enthält die Länge der zu speichernden Zeichenfolge.
Beispiel:
Zeichenfolge "abcd" - zur Vereinfachung konvertiere ich sie mit dem ASCII-Encoder und erhalte {65,66,67,68}.
Berechnen Sie Segment 2, um 4 zu erhalten. 4 Bytes sind also die Länge der konvertierten Zeichenfolge.
Berechnen Sie Segment 1, um 1 zu erhalten - da nur 1 Byte verwendet wurde, um die Längeninformationen der konvertierten Zeichenfolgeninformationen zu speichern (4, dh wenn es 260 wäre, würde ich 2 erhalten).
Der neue Byte-Streifen lautet jetzt {1,4,65,66,67,68} und kann in einer Datei gespeichert werden.
Der Vorteil in Bezug auf das Thema ist, dass ich, wenn ich eine leere Zeichenfolge zum Speichern hätte, durch Konvertierung ein leeres Array von Bytes in der Länge 0 erhalten würde und nach der Berechnung der Segmente {1,0} erhalten würde, was sein kann gespeichert und später geladen und wieder in eine leere Zeichenfolge interpretiert. Wenn ich andererseits einen Nullwert in meiner Zeichenfolge hätte, hätte ich am Ende nur {0} als mein zu speicherndes Byte-Array und könnte beim Laden wieder auf Null interpretiert werden.
Es gibt weitere Vorteile, z. B. die Größe der zu ladenden oder zu akkumulierenden Größe, wenn Sie mehrere Zeichenfolgen verschieben.
Zurück zum Thema - es wird den Stapel verschmutzen, da die gleichen beschriebenen Prinzipien von jedem System verwendet werden, um Nullen von leeren zu unterscheiden. Also ja, string.Empty benötigt mehr Speicher als null, obwohl ich es nicht tun würde Nennen wir es Verschmutzung. Es ist nur noch 1 Byte.