标签:引用 inter 实现 tin 默认 索引 not ace div
接口是指一组函数成员而不实现它们的引用类型,只能由类和结构来是实现,接口的作用就不阐述了
interface IMyInterface //interface 是关键字,后面的是接口名称 { int DoSomething(int val1, int val2); //分号代表实现主体,不能含有public等修饰符,默认为public }
下面是一些注意事项:
a:接口声明不能包括静态成员和数据成员,只能包含非静态成员方法、时间、属性、索引器
b:函数成员的声明不能有任何实现代码,并且在每个声明的主体后使用分号分隔
c: 接口成员可以使用public、private等修饰符,而接口成员是隐式public,不允许有任何访问修饰符,包括public
d:按照惯例,接口名称从大写的 I 开始,如 ITest
e:如果类从基类继承并使用了接口,基类必须放在接口之前(只能有一个基类,接口可以有多个)
f:接口可以继承接口
IMyInter b = c as IMyInter; if(b != null) Console.WriteLine("Not null");
代码先使用as运算符从类对象获取接口引用,并赋值给b,使b的值为null 或 IMyInter,判断是否为null
由于类可以实现任意数量的接口,因此可能有多个接口成员有相同的签名和返回类型,例如:
interface IMyInter1 { void Print(string a); } interface IMyInter2 { void Print(string b); }
对于上面的例子,有两种解决方法
1、实现单个成员来满足所有包含重复成员的接口
class MyClass : IMyInter1, IMyInter2 { public void Print(sting s) { Console.WriteLine("value is {0}",s); } }
2.创建显式接口成员实现,由接口名称加点号分隔符和成员名称组成
class MyClass : IMyInter1, IMyInter2 { public void IMyInter1.Print(sting s) { Console.WriteLine("IMyInter1 value is {0}",s); } public void IMyInter2.Print(sting s) { Console.WriteLine("IMyInter2 value is {0}",s); } }
标签:引用 inter 实现 tin 默认 索引 not ace div
原文地址:https://www.cnblogs.com/forever-Ys/p/10294145.html