资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

C#实现接口的实例

这篇文章主要介绍“C#实现接口的实例”,在日常操作中,相信很多人在C#实现接口的实例问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#实现接口的实例”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

在长春等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都做网站、成都网站制作 网站设计制作按需开发网站,公司网站建设,企业网站建设,成都品牌网站建设,营销型网站建设,外贸网站建设,长春网站建设费用合理。

C#实现接口的实例解析之前我们来看看C#接口的定义,如果一个类派生于一个接口,它就会执行某些函数。并不是所有的面向对象语言都支持接口,所以本节将详细介绍C#实现接口的问题。

C#实现接口注意:

熟悉COM的开发人员应注意,尽管在概念上C#接口类似于COM接口,但它们是不同的,底层的结构不同,例如,C#接口并不派生于IUnknown。C#接口根据.NET函数提供了一个契约。与COM接口不同,C#接口不代表任何类型的二进制标准。

下面列出Microsoft预定义的一个接口System.IDisposable的完整定义。IDisposable包含一个方法Dispose(),该方法由类执行,用于清理代码:

public interface IDisposable    {   void Dispose();   }

上面的代码说明,声明接口在语法上与声明抽象类完全相同,但不允许提供接口中任何成员的执行方式。一般情况下,接口中只能包含方法、属性、索引器和事件的声明。

C#实现接口中不能实例化接口,它只能包含其成员的签名。接口不能有构造函数(如何构建不能实例化的对象)或字段(因为这隐含了某些内部的执行方式)。接口定义也不允许包含运算符重载,但这不是因为声明它们在原则上有什么问题,而是因为接口通常是公共契约,包含运算符重载会引起一些与其他.NET语言不兼容的问题,例如与VB.NET的不兼容,因为VB.NET不支持运算符重载。

在接口定义中还不允许声明成员上的修饰符。接口成员总是公共的,不能声明为虚拟或静态。如果需要,就应由执行的类来声明,因此***通过执行的类来声明访问修饰符,就像上面的代码那样。

例如IDisposable。如果类希望声明为公共类型,以便执行方法Dispose(),该类就必须执行IDisposable。在C#中,这表示该类派生于IDisposable。

class SomeClass : IDisposable   {   // this class MUST contain an implementation of the    // IDisposable.Dispose() method, otherwise   // you get a compilation error   public void Dispose()   {   // implementation of Dispose() method   }   // rest of class   }

在这个例子中,如果SomeClass派生于IDisposable,但不包含与IDisposable中签名相同的Dispose()实现代码,就会得到一个编译错误,因为该类破坏了实现IDisposable的契约。当然,编译器允许类有一个不派生于IDisposable的Dispose()方法。问题是其他代码无法识别出SomeClass支持IDisposable特性。

C#实现接口注意:

IDisposable是一个相当简单的接口,它只定义了一个方法。大多数接口都包含许多成员。

接口的另一个例子是C#中的foreach循环。实际上,foreach循环的内部工作方式是查询对象,看看它是否实现了System.Collections.IEnumerable接口。如果是,C#编译器就插入IL代码,使用这个接口上的方法迭代集合中的成员,否则,foreach就会引发一个异常。

到此,关于“C#实现接口的实例”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


分享文章:C#实现接口的实例
标题来源:http://cdkjz.cn/article/ghohpi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220