为什么Object.ToString是一个虚方法?

Joa*_*nge 0 .net c#

如果它不是一个虚拟方法,你仍然可以通过ToString正常编写方法来达到同样的效果,对吧?

您甚至可以使用可选new关键字.

这会有更好的表现吗?

Kon*_*lph 14

如果它不是虚方法,你仍然可以通过正常编写ToString方法来实现相同的效果,对吧?

不.考虑(例如)Console.WriteLine函数的(一次重载)的签名:

void Console.WriteLine(object o);
Run Code Online (Sandbox Code Playgroud)

如果ToString是novirtual,则总是调用System.Object.ToString实现,而不是传递给函数的实际对象上的实现.

  • 如果它是一个C++模板,它将起作用.但是使用C#或Java泛型,参数必须实现一个接口,这将涉及动态分派,就像虚拟方法一样. (3认同)
  • 为什么不花30秒写一个控制台应用程序? (3认同)
  • 不,不会.请参考有关多态的教程. (2认同)