CLR via C# 接口 定义接口

接口对一组方法签名进行了统一命名。

接口还能定义事件、无参属性和有参属性(C#的索引器)。这些东西本质上都是方法,它们只是语法上的简化。

接口不能定义任何构造器方法,也不能定义任何实例字段。

//--

虽然CLR允许接口定义静态方法、静态字段、常量和静态构造器,但符合CLS标准的接口绝不允许,因为有的编程语言不能定义或访问它们。C#禁止接口定义任何一种这样的静态成员。

//--

C#用 interface 关键字定义接口。要为接口指定名称和一组实例方法签名。

举例:

在CLR看来,接口定义就是类型定义。也就是说,CLR会为接口类型对象定义内部数据结构,同时可通过反射机制来查询接口类型的功能。和类型一样,接口可在文件范围中定义,也可嵌套在另一个类型中。定义接口类型时,可指定你希望的任何可见性/可访问性(public,protected,internal等)。

根据约定,接口类型名称以大写字母 I 开头,目的是方便在源代码中辨认接口类型。CLR支持泛型类型和接口中的泛型方法。

接口定义可从另一个或多个接口“继承”。加引号,是因为它并不是严格意义的继承。接口继承的工作方式并不完全和类继承一样。

我个人倾向于将接口继承看成是将其他接口的协定包括到新的接口中。例如,ICollection<T>接口定义就包含了IEnumerable<T>和IEnumerable两个接口的协定。这有下面两层含义。

1.继承ICollection<T>接口的任何类必须实现ICollection<T>,IEnumerable<T>和IEnumerable这三个接口所定义的方法。

2.任何代码在引用对象时,如果期待该对象的类型实现了ICollection<T>接口,可以认为该类型还实现了IEnumerable<T>和IEnumerable接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值