C#接口方法的实例介绍

本篇内容介绍了“C#接口方法的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联于2013年开始,先为新晃等服务建站,新晃等地企业,进行企业商务咨询服务。为新晃企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1.公有方法实现C#接口方法

尽管C#在定义接口时不用指明接口方法的访问控制方式,但默认接口方法均为public型(这可以从反编译的IL代码中看到)。下面是使用Reflector查看的接口IL代码:

class private interface abstract auto ansi IControl{  method public hidebysig newslot abstract virtual instance void Paint() cil managed{  }  }

实现接口的类需要实现所有接口方法。通常情况下,接口的实现方法也为public型。如下案例:

using System ;  interface IControl  {  void Paint();  }  public class EditBox: IControl  {  public void Paint()  {  Console.WriteLine("Pain method is called!");  }  }  class Test  {  static void Main()  {  EditBox editbox = new EditBox();  editbox.Paint();  ((IControl)editbox)。Paint();  }  }

接口就好像是关系型数据库中的一对多表,一个接口对应多个接口方法,每个接口方法又对应虚拟方法表(VMT)中的某个公有或私有方法。可见通过接口对方法进行调用需要多出一道转换工作,因此执行效率不如直接调用。

2.私有方法不能实现C#接口方法

如果想将接口方法直接实现为私有方法是办不到的。下面的EditBox的代码中Paint方法没有特殊说明,默认为private,导致代码无法执行:

using System ;  interface IControl  {  void Paint();  }  public class EditBox: IControl  {  void Paint()  {  Console.WriteLine("Pain method is called!");  }  public void ShowPaint()  {  this.Paint();  ((IControl)this)。Paint();  }  }  class Test  {  static void Main()  {  EditBox editbox = new EditBox();  editbox.ShowPaint();  }  }

程序在编译时将显示如下编译错误:“”EditBox“不会实现接口成员”IControl.Paint()“。”EditBox.Paint()“或者是静态、非公共的,或者有错误的返回类型。”

由于接口规范中的方法默认的访问权限是public,而类中的默认访问权限是default,也就是说private,因此导致权限范围收缩,两者权限并不相同,所以必须将类的权限调整为public才可以使上面的代码得以执行。

3.实现专门的C#接口方法

using System ;  interface IControl  {  void Paint();  }  public class EditBox: IControl  {  void Paint()  {  Console.WriteLine("Pain method is called!");  }  void IControl.Paint()  {  Console.WriteLine("IControl.Pain method is called!");  }  public void ShowPaint()  {  this.Paint();  ((IControl)this)。Paint();  }  }  class Test  {  static void Main()  {  EditBox editbox = new EditBox();  editbox.ShowPaint();  //editbox.Paint();  ((IControl)editbox)。Paint();  }  }

“C#接口方法的实例介绍”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!

网页题目:C#接口方法的实例介绍
文章网址:https://www.cdcxhl.com/article26/jsdgjg.html

成都网站建设公司_创新互联,为您提供小程序开发品牌网站制作全网营销推广网站维护ChatGPTApp开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司