知识大全 认识.NET中的虚函数[2]

Posted 函数

篇首语:努力到无能为力,拼搏到感动自己本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 认识.NET中的虚函数[2]相关的知识,希望对你有一定的参考价值。

认识.NET中的虚函数[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  运行时绑定仅体现在虚函数中 因此在试验 中 输出的结果是CA Foo 因为Foo没有被申明为virtual 在编译阶段 已经把ca Foo绑定到CA Foo

  Override只能用于虚函数中 当子类继承基类 他便拥有了基类所有的函数 Override修饰的函数 将替换基类原来的函数 否则 子类会新增加一个函数 并同时保留基类中的函数 下面的这个例子 很好的说明了这个问题

class CA     public virtual void Foo()       Console WriteLine( CA Foo );          class CB : CA     public override void Foo()        Console WriteLine( CB Foo );          class CC : CA      public new void Foo()        Console WriteLine( CC Foo );          class Test      public static void Main()        Console WriteLine(typeof(CB) GetMethods() Length);  // 输出       Console WriteLine(typeof(CC) GetMethods() Length); // 输出       

  这段程序输出CB和CC的函数个数 CB的 个函数中 个来自于Sysetm Object 剩下的一个就是Foo CC中多了一个函数 因为使用了new (如果不使用new 也是相同的结果 因为C#编译器默认使用new 但不显示指明new会给出一个警告) 说明了CC Foo是一个不同于CA Foo的虚函数

  所以 在试验 中 不使用override 我们在InvokeFoo中调用的还是CA Foo() 虽然这个时候还是运行时绑定 但是因为CB Foo并没有覆蓋CA Foo 因此我们还是得到了基类的实现

  当一个函数不是虚函数的时候 子类中相同签名的函数总是覆蓋了父类中的函数 并不需要override关键字 所以c#编译器会把它当作一个错误 如上表中试验 所示

  如果读者理解了上面的内容 那么来看看一个略微复杂的情况 我们邀请interface出场!

interface IA      void Foo();  class CA: IA     public void Foo()       Console WriteLine( CA Foo );    

  [问题]: Foo是虚函数吗?

  答案是肯定的 就像interface方法不能显示声明为public一样 我们也不能在IA Foo前面加上virtual 原因很简单 所有的interface方法都是虚函数!在调用interface方法的时候 总是要使用运行时绑定

cha138/Article/program/net/201311/14949

相关参考

知识大全 认识.NET中的虚函数[3]

认识.NET中的虚函数[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  [问题]:CA实现I

知识大全 认识.NET中的虚函数[1]

认识.NET中的虚函数[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  面向对象的程序设计有

知识大全 如何在Delphi中调用.Net编写的DLL中的函数

如何在Delphi中调用.Net编写的DLL中的函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 C#区别和认识四个判等函数

C#区别和认识四个判等函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Net有四个判等函数?

知识大全 认识OracleSQL内置函数

认识OracleSQL内置函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL中的单记录函

知识大全 .Net图片处理函数

.Net图片处理函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!cha138/Arti

知识大全 实例讲解.NET多线程执行函数

实例讲解.NET多线程执行函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  这里为什么会出现多

知识大全 ASP.NET中如何使用匿名函数

ASP.NET中如何使用匿名函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  尝试从缓存中获取

知识大全 c#.net常用函数列表

DateTime数字型 SystemDateTimecurrentTime=newSystemDateTime();  取当前年月日时分秒  currentTime=SystemDateTimeNow

知识大全 ASP.NET文件下载函数使用浅析

ASP.NET文件下载函数使用浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET文