C#Virtual和Override的几种组合
2015-10-13 20:14
302 查看
情况1:
编译通过,有警告让在B的方法里添加new关键字,以便将A的方法隐藏
编译时绑定(根据声明类型调用方法)
情况2:
编译通过,有警告让在B的方法里添加new或者override关键字,默认将A的方法隐藏
编译时绑定(根据声明类型调用方法)
情况3:
编译通过
运行时绑定(根据实际类型调用方法)
情况4:
编译错误,被override的方法必须是abstract、virtual或者override的
结论1:若想使用动态绑定(运行时绑定)
结论2:若想使用静态绑定(编译时绑定)
看来不能死读书,还是实际操作一下比较容易搞清楚:)
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#比较和运算符重载
- C#中如何只保留小数点后面两位?
- 【C#高效编程50例】条目3:使用is 或 as 操作符而不是强制类型转换
- C# 中字符串转换成日期
- c# - string to byte[] and vice versa
- C#原始类型扩展方法—this参数修饰符
- 初学C#之list(转载)
- BC#59 Reorder the Books
- C# DataTable的详细用法
- 笔记16 C# typeof() & GetType()
- C#: 双检锁 (Double Checked Locking)
- c#编程初级篇(第一季)01C#和.net框架
- C# 操作域用户
- C#中Arraylist的sort函数用法实例分析
- C#中关于@的用法
- c#中字符串按指定字符进行数组化,并按指定要求格式化数组内的字符串
- C#简单输出日历的方法
- C# 独占方式打开 Access
- C#接口实现方法实例分析
- C# 的关键字详细介绍(转)