c#笔记(五)
来源:互联网 发布:网络药房 编辑:程序博客网 时间:2024/05/18 02:56
接口成员访问
接口成员时通过LM形式的成员访问表达式和I[A]形式的索引器访问表达式来访问的,其中I是接口类型,M是该接口类型的方法、属性或事件,A是对应的索引器参数列表。
对于严格单一继承(继承链中的每个接口均恰好有零个或一个直接基接口)的接口,成员查找、方法调用和索引器访问规则的效果与类和结构的完全相同:派生程度较大的成员隐藏具有相同名称或签名的派生程度较小的成员。然而,对于多重继承接口,当两个或更多个不相关(互不继承)的基接口中声明了具有相同名称或签名的成员时,就会发生多义性。
interface IList { int Count { get; set; } } interface ICounter { void Count(int i); } interface IListCounter : IList, ICounter { } class C { void Test(IListCounter x) { x.Count(1); //Error x.Count = 1; //Error ((IList)x).Count = 1; ((ICounter)x).Count(1); }
interface IInteger { void Add(int i); } interface IDouble { void Add(double i); } interface INumber : IInteger, IDouble { } class C { void Test(INumber n) { n.Add(1); //Error n.Add(1.0); ((IInteger)n).Add(1); ((IDouble)n).Add(1); } }
由于方法调用要求以相同类型声明所有的重载候选方法,因此调用n.Add(1)是不明确的。然而,调用n.Add(1.0)是允许的,这是因为只有IDouble.Add使用。插入显式强制转换后,就只有一个候选方法了,因此没有多义性。
c#接口继承和类继承
c#接口继承和类继承不同,首先,类继承不仅是说明继承,而且也是实现继承;而接口继承只是说明继承。也就是说,派生类可以继承基类的方法实现,而派生的接口只继承了父接口的成员方法说明,而没有继承父接口的实现;其次,c#中类继承只允许单继承,但是接口继承允许多继承,一个子接口可以有多个父接口。
阅读全文
0 0
- c#笔记(五)
- C#学习笔记(五)
- C#学习笔记(五)
- C# Graphics Programming笔记(五)
- C#本质论 读书 笔记(五)
- 学习杂物(五)c#学习笔记
- C#学习笔记(五)
- C#笔记整理(五)
- C#学习笔记五-HashTable
- c#学习笔记(五)struct
- C#学习笔记五---委托
- C#学习笔记(五)(Winform窗体)(一)
- C#学习笔记(五):类成员的定义
- C#和.NET基础知识——学习笔记(五)
- C# 学习笔记(五) ++/--运算符重载的意义
- c# 多线程学习笔记(五)读者写者问题
- C#多线程(五)
- C# Hadoop学习笔记(五)—设计粗浅的C#的云计算框架
- python--装饰器(decorator)
- js同一个页面,多个enter事件绑定
- Material Design
- MLlib
- String和StringBuffer 以及异常抛出机制
- c#笔记(五)
- C++中的static
- 引用---引用型参数
- java实现单例模式--懒汉式
- java8之lambda表达式
- format()方法
- PAT 1043. Is It a Binary Search Tree (25)
- centos 7上nginx+uwsgi 性能调优
- NPOI导出excel表格某些单元格或者列报未将对象引用设置到对象的实例