コードはかなり自明です。私が作成したときa1
、b1
同じテキストを含む 2 つの異なる文字列インスタンスを作成していると思っていました。したがって、私は正しいと思いますが、間違っていると思いa1 == b1
ますが、object.ReferenceEquals(a1,b1)
そうではありません。なんで?
//make two seemingly different string instances
string a1 = "test";
string b1 = "test";
Console.WriteLine(object.ReferenceEquals(a1, b1)); // prints True. why?
//explicitly "recreating" b2
string a2 = "test";
string b2 = "tes";
b2 += "t";
Console.WriteLine(object.ReferenceEquals(a2, b2)); // prints False
//explicitly using new string constructor
string a3 = new string("test".ToCharArray());
string b3 = new string("test".ToCharArray());
Console.WriteLine(object.ReferenceEquals(a3, b3)); // prints False