当前位置:主页   - 电脑 - 网站开发 - ASP.Net
CLR怎样实现虚方法的多态调用(1)
来源:网络   作者:   更新时间:2012-02-26
收藏此页】    【字号    】    【打印】    【关闭

  最近一直对.net framework中,虚方法的调用是如何实现这个问题有些疑惑,在看了Essential .Net关于Method的那一章和Artech推荐的文章Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects以后,还是一知半解,有些疑惑得不到答案。主要有这些:

   父类定义的非虚方法是否在子类中有拷贝?

   虚方法是如何实现多态的?

   子类继承父类的虚方法实现是否和继承非虚方法机制相同?

   如果子类隐藏了父类的虚方法,这又是怎样实现的?

   当然问题不止这么多,关于接口方面还有很多很多疑惑,不过时间有限,一下也没办法全部弄清楚,有时间慢慢研究。我主要使用Windbg工具来跟踪调试,关于这个工具如何使用,Google一下就会有很多了。

   这些都是我自己研究加上参考资料所得,如果有不对的地方,希望大家讨论指出。

   首先看下面这段代码:

 public class Base
 {
   public virtual void VirtualFun1()
   {
     Console.WriteLine("Base.VirtualFun1");
   }
   public void NoneVirtualFun1()
   {
     System.Console.WriteLine("Base.NoneVirtualFun1");
   }
   public virtual void VirtualFun2()
   {
     System.Console.WriteLine("Base.VirtualFun2");
   }
   public virtual void VirtualFun3()
   {
     System.Console.WriteLine("Base.VirtualFun3");
   }
 }

 public class Derived : Base
 {
   public override void VirtualFun1()
   {
     Console.WriteLine("Derived.VirtualFun1");
   }
   public new virtual void VirtualFun2()
   {
     System.Console.WriteLine("Derived.VirtualFun2");
   }
   public virtual void VirtualFun4()
   {
     System.Console.WriteLine("Derived.VirtualFun4");
   }

 }

其它资源
来源声明

版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明