【发布时间】:2019-07-01 07:56:42
【问题描述】:
据我所知,.NET Console.WriteLine 方法调用了 Class 的 ToString 方法。在下面的代码中, Console.WriteLine(object) 调用和 Console.WriteLine(object.ToString()) 调用产生不同的输出。如果在下面的代码中将 override 关键字添加到 ToString 方法,则输出将变得相同。但我想知道为什么第一种情况下的输出不同。
程序输出:
TestOverrideConsole.Program(类名)
来自程序的你好
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Console.WriteLine(p);
Console.WriteLine(p.ToString());
Console.ReadLine();
}
public String ToString()
{
return "Hello from Program";
}
}
【问题讨论】:
-
您必须重写 ToString,否则您只是将其隐藏在 Object 中,并且您的
ToString不会在Console.WriteLine(p)上调用,只有当您直接调用它时。