最近,我正在浏览一个C#程序,偶然发现了其中一个类的某些奇怪行为。我编写了一个小程序来概述这种行为:
class Program
{
static void Main()
{
Test inst1 = new Test();
inst1.name0 = "Hello";
inst1.name1 = "World";
Console.WriteLine(inst1.ToString());
Console.WriteLine(inst1);
}
}
class Test
{
public string name0;
public string name1;
public override string ToString()
{
return string.Format("Name0: {0}; Name1: {1}", name0 ?? "(null)", name1 ?? "(null)");
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
Name0: Hello; Name1: World
Name0: Hello; Name1: World
Run Code Online (Sandbox Code Playgroud)
那么,为什么inst1.ToString()和inst1在WriteLine()方法中返回相同的值?我糊涂了。