.NET 接口
来源:互联网 发布:unity3d itween的使用 编辑:程序博客网 时间:2024/05/13 04:20
- 接口
接口是一组抽象成员的集合,表示某个类或结构可以选择去实现的行为,描述的是可属于任何类或结构的一组相关功能。接口方法的实现是在实现接口的类中完成的,实现接口的类可以显式实现该接口的成员,显式实现的成员不能通过类实例访问,而只能通过接口实例访问。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型。 它不能包含静态成员。 接口成员是自动公开的,且不能包含任何访问修饰符。
- 关键字
- interface
- 可包含成员
- 方法
- 备注
- 接口类似于抽象基类:实现接口的任何非抽象类型都必须实现接口的所有成员。
- 接口可以作为参数传递实现该接口的类型
- 显式接口实现
如果类实现两个接口,并且这两个接口包含具有相同签名的成员,那么在类中实现该成员将导致两个接口都使用该成员作为它们的实现。
interface IControl{ void Paint();}interface ISurface{ void Paint();}class SampleClass : IControl, ISurface{ // 2个接口都需要实现的方法 public void Paint() { }}
然而,如果两个接口成员执行不同的函数,那么这可能会导致其中一个接口的实现不正确或两个接口的实现都不正确。可以显式地实现接口成员 -- 即创建一个仅通过该接口调用并且特定于该接口的类成员。这是使用接口名称和一个句点命名该类成员来实现的。
public class SampleClass : IControl, ISurface{ void IControl.Paint() { System.Console.WriteLine("IControl.Paint"); } void ISurface.Paint() { System.Console.WriteLine("ISurface.Paint"); }}
类成员 IControl.Paint 只能通过 IControl 接口使用,ISurface.Paint 只能通过 ISurface 使用。两个方法实现都是分离的,都不可以直接在类中使用。
SampleClass obj = new SampleClass();IControl c = (IControl)obj;c.Paint();ISurface s = (ISurface)obj;s.Paint();显式实现还用于解决两个接口分别声明具有相同名称的不同成员(如属性和方法)的情况。为了同时实现两个接口,类必须对属性 P 和/或方法 P 使用显式实现以避免编译器错误。
interface ILeft{ int P { get;}}interface IRight{ int P();}class Middle : ILeft, IRight{ public int P() { return 0; } int ILeft.P { get { return 0; } }}
- 判断类型是否支持指定接口
- try/catch
- as
- is
使用is关键字检查类型是否实现该接口,如果类型不支持该接口则返回false,如果支持该接口则返回true。
- 构建可枚举类型
如果类型需要实现可枚举的功能需要继承自IEnumerable或IEnumerator接口。
- 实现接口
- IEnumerable
- IEnumerator
- 实现接口
- 构建可克隆的对象
如果类型需要实现可克隆的功能需要继承自ICloneable接口。
- 实现接口
- ICloneable
- 实现接口
- 构建可比较的对象
如果类型需要实现可比较的功能需要继承自IComparable接口。
- 实现接口
- IComparable
- 实现接口
0 0
- .NET 接口
- .NET 接口
- .net开发Provision接口
- .NET中的常用接口
- .net 接口示例
- .net IConfigurationSectionHandler接口应用
- 深切认识.NET接口
- php 调用.net 接口
- .NET调用SAP接口
- .NET简谈接口
- .NET调用SAP接口
- net-snmp一些接口
- .NET简谈接口
- vb.net 接口
- asp.net 接口
- 飞信 .net接口
- VB.NET关于接口
- .NET--接口设计
- iphone开发私房菜_5_] iphone中如何实现下拉菜单 .
- 将一个class打包进已存在的jar包中
- 关于伏秒平衡原理的解释
- 传纸条(一) 与 探寻宝藏 双线DP
- FFmpeg参数详细解释
- .NET 接口
- C++ - RTTI(RunTime Type Information)运行时类型信息 详解
- 根据bundle ID获取App Store的APP信息(可用来检测新版本,可以不考虑APP ID了)
- jar命令可以直接把class文件添加到jar包里吗
- Linux Shell脚本编程(07)—当个好管家
- 音视频开发:[4]16.1 基本概念
- POJ 3181 Dollar Dayz
- .NET 泛型
- Hibernate的session的get()和load()方法