C#实现接口的实例解析

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();   }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

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

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   }
  • 1.

  • 2.

  • 3.

  • 4.

  • 5.

  • 6.

  • 7.

  • 8.

  • 9.

  • 10.

  • 11.

  • 12.

  • 13.

  • 14.

  • 15.

  • 16.

  • 17.

  • 18.

  • 19.

  • 20.

  • 21.

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

C#实现接口注意:

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

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

C#实现接口的相关内容就向你介绍到这里,希望对你了解和学习C#实现接口有所帮助。

【编辑推荐】

  1. .Net水晶报表使用学习的九大步骤

  2. C#接口定义及实例应用浅析

  3. 详解C#接口以及实现

  4. C#接口的定义详解

  5. C#接口编程之接口成员浅析

14    2009-08-31 17:16:12    C#实现接口