次のコードに直面しましょう:
string a = "This is not a long string!";
string b = "Another string";
b = "This is" + " not a long " + "string" + "!";
Console.WriteLine(object.ReferenceEquals(a, b)); //True !
string c = "This is" + " not a long " + "string" + '!';
Console.WriteLine(object.ReferenceEquals(a, c)); //False
私が見る唯一の理由は、.NET が変数を最適化してスペースを節約していることです。
.NET は、ゼロで終了した [null] または文字列の長さの文字列を格納しますか?
次のコードを書くと、.NET が文字列に対して最適化を実行すると、null char の後の部分が失われる可能性がありますか?
string Waaaa = "This is not \0a long string!";