私はそれstring
が不変であり、StringBuilder
可変であることを知っています。しかし、次のコード出力を説明できる人はいますか? どちらも参照型なので、結果が異なるのはなぜですか?
String s1 = "hello";
String s2 = "hello";
Console.WriteLine(s1 == s2); //true
Console.WriteLine(Object.ReferenceEquals(s1, s2)); //true
StringBuilder sb1 = new StringBuilder("hello");
StringBuilder sb2 = new StringBuilder("hello");
Console.WriteLine(sb1 == sb2); //false
Console.WriteLine(Object.ReferenceEquals(sb1, sb2)); //false