这段代码片段来自《C#深入浅出》。
以上代码片段的输出结果是:
当主方法被更改为:
以上代码片段的输出结果是:
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
当主方法被更改为:
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方法时,字符串类型会发生什么变化?