我有示例代码。
var charMass = new char[] { 's', 't', 'r' };
string myString = new string(charMass);
string myString2 = new string(charMass);
string myString3 = "str";
string myString4 = "str";
bool bb1 = Object.ReferenceEquals(myString, myString2);
bool bb2 = Object.ReferenceEquals(myString, myString3);
bool bb3 = Object.ReferenceEquals(myString3, myString4);
为什么 bb1 和 bb2 是假的?我知道 equals 必须显示为真,因为它比较值,但是那些字符串的内存分配呢?为什么 myString3 和 myString4 指向堆中的同一个内存块,但 myString 和 myString2 没有?