C# の string オブジェクトの参照値
C#の文字列型(object)の 参照 についていくつか試してみた結果 記事にあったもの static void Main(string[] args) { string a = "hello"; string b = "h"; b += "ello"; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // Flase } 実データはコピーされず、参照先が同じになります static void Main(string[] args) { string a = "hello"; string b = a; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } コンパイラの最適化によるものだろうか、定数はまとめられるらしい static void Main(string[] args) { string a = "hello"; string b = "he" + "llo"; Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } static void Main(string[] args) { string a = "hello"; string b = Hello(); Console.WriteLine(a == b); // True Console.WriteLine(object.ReferenceEquals(a, b)); // True } static string Hello() { string s = "hello"; return s; }