码迷,mamicode.com
首页 > Windows程序 > 详细

C#Virtual和Override的几种组合

时间:2015-10-13 20:58:25      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:

情况1:

 
class A{public void Show()}
class B:A{public void Show()}

  

编译通过,有警告让在B的方法里添加new关键字,以便将A的方法隐藏

编译时绑定(根据声明类型调用方法)

情况2:

class A{public virtual void Show()}
class B:A{public void Show()}

编译通过,有警告让在B的方法里添加new或者override关键字,默认将A的方法隐藏

编译时绑定(根据声明类型调用方法)

情况3:

class A{public virtual void Show()}
class B:A{public override void Show()}

  

编译通过

运行时绑定(根据实际类型调用方法)

情况4:

class A{public void Show()}
class B:A{public override void Show()}

  

编译错误,被override的方法必须是abstract、virtual或者override的

结论1:若想使用动态绑定(运行时绑定)

class A{public virtual void Show()}
class B:A{public override void Show()}

  

结论2:若想使用静态绑定(编译时绑定)

class A{public void Show()}
class B:A{public new void Show()}

  

看来不能死读书,还是实际操作一下比较容易搞清楚:)

C#Virtual和Override的几种组合

标签:

原文地址:http://www.cnblogs.com/binyao/p/4875707.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!