本文实例讲述了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#接口实现方法实例分析
发表于:2017-08-08
作者:Linux视野
来源:
 相关文章
从MVC到DDD:探寻软件架构的本质变迁 CRM软件的种类、特点以及在行业中应用 深度调研Copilot,AI编程助手引领未来... 为React开发人员释放ChatGPT的开发力量 ChatGPT无法胜任的五种编程任务 软件开发人员指南:在自己的数据上训...- 周排行
- 月排行
- 评论排行
-   让你编码嗨到停不下来的8个VSCode插件
-   2024年最具潜力的十大编程语言:引领...
-   前端如何选择图片的格式?你学会了吗
-   设计更快的网页(二):图片替换
-   高效IT:如何利用零代码开发平台快速...
-   2023 年 Java 发展趋势
-   智能可穿戴设备的主要测试步骤
-   高效IT:如何利用零代码开发平台快速...
-   一体化好好的,为什么要前后端分离?
-   让你编码嗨到停不下来的8个VSCode插件
-   五个IntelliJ IDEA插件,高效编写代码
-   前端如何选择图片的格式?你学会了吗
-   Spring Boot是Java程序员的必备技能...
-   Java和Python对比,看完这篇你就知道...
-   从软件出发,非功能测试思考总结
-   展望2017,谁是网络技术头牌?
-   C/C++单元测试工具Visual Unit 4 介绍
-   国内外最好用的6款Bug跟踪管理系统
-   性能测试指标评估必读
-   百度软件测试方案模板
-   38张史上最全的IT工程师技能图谱
-   C/C++单元测试工具Visual Unit 4 介绍
-   2019年,你会选哪些安全测试工具?
-   十款Web服务器性能压力测试工具
-   软件测试入门指南:周期、模型和文档化
-   记自动化测试成神学习之路
-   软件测试全景图 -最全的思维导图