此代码片段来自 C# in Depth
static bool AreReferencesEqual<T>(T first, T second)
where T : class
{
return first == second;
}
static void Main()
{
string name = "Jon";
string intro1 = "My name is " + name;
string intro2 = "My name is " + name;
Console.WriteLine(intro1 == intro2);
Console.WriteLine(AreReferencesEqual(intro1, intro2));
}
上述代码片段的输出是
True
False
当 main 方法更改为
static void Main()
{
string intro1 = "My name is Jon";
string intro2 = "My name is Jon";
Console.WriteLine(intro1 == intro2);
Console.WriteLine(AreReferencesEqual(intro1, intro2));
}
上述代码片段的输出是
True
True
我无法理解为什么?
编辑:一旦您了解字符串实习,以下问题将不适用。
AreReferencesEqual
第二个代码片段中
的通用方法如何接收参数?
当连接字符串类型以使 == 运算符不调用 String 类型的重载 Equals 方法时,它会发生什么变化?