虚方法是指动态还是静态类型?

时间:2014-02-26 09:38:26

标签: c# virtual

作为.NET的全新版本,只是为了向我自己澄清:

虚方法是指动态还是静态对象类型?

Base myObject = new Derived();
myObject.Foo(); 

调用派生类的Foo()(假设Foo()在Base中是虚拟的并在Derived中被覆盖)?

2 个答案:

答案 0 :(得分:3)

你是对的。

术语“静态”和“动态”类型在这里是错误的。这里的一切都是静态输入的。

答案 1 :(得分:3)

是的,由于Foo()被覆盖,因此它是派生类' Foo()你打算打电话!

我引用MSDN

  

虚拟功能是您期望的成员功能   在派生类中重新定义。当您引用派生类对象时   使用指针或对基类的引用,可以调用   该对象的虚函数并执行派生类   功能的版本。