考虑以下代码:
public static void Main()
{
string str1 = "abc";
string str2 = "abc";
if (str1 == str2)
{
Console.WriteLine("True");
}
else
{
Console.WriteLine("False");
}
Console.ReadLine();
}
输出为“真”。string
是 .Net 中的引用类型,我正在比较两个不同的对象,但输出仍然是“真”。
- 是因为它
ToString()
在比较两个对象之前在内部调用了两个对象的方法吗? - 还是因为 a
string
是不可变类型?具有相同值的两个完全不同的string
对象将指向堆上的相同内存位置?
比较是如何string
发生的?
内存分配如何在堆上工作?具有相同值的两个不同string
对象会指向相同的内存位置,还是指向不同的内存位置?