当在C#中实现接口时,可以在类中声明一个显式接口成员实现。显式接口成员实现是指在声明方法、属性和索引器时,使用完全限定接口的成员名称作为标识符。以显式接口成员实现方式生成的成员叫做显式成员。
接口成员完全限定名的使用格式如下:
声明的该成员接口名.成员名
要实现一个显式接口成员,必须同时具备如下两个条件。
1)在声明类时,必须在其基类列表中指定一个接口,并且这个接口必须包含一个与该显式接口成员的完全限定名、类型和参数类型完全相同的成员。
2)接口成员的完全限定名必须引用声明该成员的接口名称。
另外,在实现C#接口成员的完全限定名时,不能包含abstract、virtual、override、static等访问修饰符。例如,在下面的代码中分别使用了显式接口成员实现:
显式接口成员属于接口成员,所以不能使用类实例来访问,而只能使用接口实例来访问。并且在使用接口实例来访问时,只能使用该接口成员的名称来引用。显式接口成员可以使用this进行访问,也可以直接引用类的成员。但是在类内不能直接引用显式接口成员实现,而需要使用this进行显式转换成接口实例后再进行引用。
实例48:实现显式接口成员
下面将通过实例来说明实现显式接口成员的具体流程。本实例保存在“光盘:\daima\10”文件夹内,项目名为xianshijiekou。实例的功能是根据定义的接口,在类内执行对应的处理方法。实例文件的主要代码如下:
上述实例代码的设计流程如下。
1)分别定义接口mm和nn,并在其中分别定义处理方法Save()。(www.xing528.com)
2)定义类aa,设置其基接口为mm和nn。
3)在类aa内分别使用显式接口成员实现mm.Save和nn.Save。
4)在类aa内声明处理方法Save()。
5)定义类aa的实例对象doc,并调用它的处理方法Save()。
6)分别定义接口实例对象db和file,并调用它们各自的处理方法Save()。
执行后将分别调用对应的处理方法输出对应的方法类型,如图10-7所示。
图10-7 实例执行结果
从图10-7所示的执行结果可以看出,使用显式接口成员实现可以使类aa内的三个处理方法Save()独立运行,各自完成它们的功能,而不会造成冲突。
多学一招
在使用显示接口时必须注意如下两点。
1)显式接口成员属于接口成员,所以不能使用类实例来访问,而只能使用接口实例来访问。并且在使用接口实例访问时,只能使用该接口成员的名称来引用。
2)显式接口成员可以使用this进行访问,也可以直接引用类的成员。但是在类内不能直接引用显式接口成员实现,而需要使用this进行显式转换成接口实例后再进行引用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。