html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

基于C#的接口基础教程之五_.NET教程_编程技术

[ ] 已经帮助:人解决问题

  第五节、实现接口4PUHTML5中文学习网 - HTML5先行者学习网

  1、显式实现接口成员 4PUHTML5中文学习网 - HTML5先行者学习网

  为了实现接口,类可以定义显式接口成员执行体(Explicit interface member implementations)。显式接口成员执行体可以是一个方法、一个属性、一个事件或者是一个索引指示器的定义,定义与该成员对应的全权名应保持一致。 4PUHTML5中文学习网 - HTML5先行者学习网

using System ;
interface ICloneable {
 object Clone( ) ;
}
interface IComparable {
 int CompareTo(object other) ;
}
class ListEntry: ICloneable, IComparable {
 object ICloneable.Clone( ) {…}
 int IComparable.CompareTo(object other) {…}
}
4PUHTML5中文学习网 - HTML5先行者学习网

  上面的代码中ICloneable.Clone 和IComparable.CompareTo 就是显式接口成员执行体。 4PUHTML5中文学习网 - HTML5先行者学习网

  说明: 4PUHTML5中文学习网 - HTML5先行者学习网

  1、不能在方法调用、属性访问以及索引指示器访问中通过全权名访问显式接口成员执行体。事实上,显式接口成员执行体只能通过接口的实例,仅仅引用接口的成员名称来访问。 4PUHTML5中文学习网 - HTML5先行者学习网

  2、显式接口成员执行体不能使用任何访问限制符,也不能加上abstract, virtual, override或static 修饰符。 4PUHTML5中文学习网 - HTML5先行者学习网

  3、显式接口成员执行体和其他成员有着不同的访问方式。因为不能在方法调用、属性访问以及索引指示器访问中通过全权名访问,显式接口成员执行体在某种意义上是私有的。但它们又可以通过接口的实例访问,也具有一定的公有性质。 4PUHTML5中文学习网 - HTML5先行者学习网

  4、只有类在定义时,把接口名写在了基类列表中,而且类中定义的全权名、类型和返回类型都与显式接口成员执行体完全一致时,显式接口成员执行体才是有效的,例如: 4PUHTML5中文学习网 - HTML5先行者学习网

class Shape: ICloneable {
object ICloneable.Clone( ) {…}
int IComparable.CompareTo(object other) {…}
}
  使用显式接口成员执行体通常有两个目的:
4PUHTML5中文学习网 - HTML5先行者学习网

  1、因为显式接口成员执行体不能通过类的实例进行访问,这就可以从公有接口中把接口的实现部分单独分离开。如果一个类只在内部使用该接口,而类的使用者不会直接使用到该接口,这种显式接口成员执行体就可以起到作用。 4PUHTML5中文学习网 - HTML5先行者学习网

  2、显式接口成员执行体避免了接口成员之间因为同名而发生混淆。如果一个类希望对名称和返回类型相同的接口成员采用不同的实现方式,这就必须要使用到显式接口成员执行体。如果没有显式接口成员执行体,那么对于名称和返回类型不同的接口成员,类也无法进行实现。 4PUHTML5中文学习网 - HTML5先行者学习网

  下面的定义是无效的,因为Shape 定义时基类列表中没有出现接口IComparable。 4PUHTML5中文学习网 - HTML5先行者学习网

class Shape: ICloneable
{
object ICloneable.Clone( ) {…}
}
class Ellipse: Shape
{
object ICloneable.Clone( ) {…}
}
4PUHTML5中文学习网 - HTML5先行者学习网

共7页: 上一页 1 [2] [3] [4] [5] [6] [7] 下一页 4PUHTML5中文学习网 - HTML5先行者学习网

4PUHTML5中文学习网 - HTML5先行者学习网
4PUHTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助