C#中接口方法的显示实现
当一个类实现接口的方法是有两种方式,第一种就是直接实现,第二种显示实现,但是一般用的比较多的是第一种。
那么为什么要弄一个接口方法的显示实现呢?主要原因是,如果一个类需要显示多个接口,这些接口有同名方法,这个时候普通的实现就无法解决这个问题,用显示实现就能解决这个问题。
class Test: ITest1,ITest2 { //在实现上面两个接口的时候出现同名的情况,如果使用第一种,实现方式,无法区分这个实现的这个个方式是那个接口中的 } interface ITest1 { void Method1(); } interface ITest2 { void Methid1(); }
如何显示的实现接口方法,其实就是一句话把方法名称前加个接口名称 接口名.方法名
class Test: ITest1,ITest2 { //在实现上面两个接口的时候出现同名的情况,如果使用第一种,实现方式,无法区分这个实现的这个个方式是那个接口中的 void ITest1.Method1() //ITest1中的方法 { } void ITest2.Methid1() //ITest2中的方法 { } } interface ITest1 { void Method1(); } interface ITest2 { void Methid1(); }
那么如何调用这些显示实现的方法呢?
(1) 显示实现的接口方法在类中都是私有的,直接new出来的实例中是无法获取到这些方法的(如图,Test的实例中实现的接口方法在智能提示中是没有的)
(2)调用时需要把实例先转型成接口类型在调用(这么做的原因跟上面一样,如果能直接就调用因为方法名字都一样,程序无法得知具体是调用那个方法,在转型后,接口中的方法只有一个,就能知道掉用的具体方法了
static void Main() { Test test = new Test(); (test as ITest1).Method1(); //显示的结果是 ITest1.Method1 (test as ITest2).Methid1(); //显示的结果是 ITest2.Methid1 Console.ReadKey(); }
class Test: ITest1,ITest2 { //在实现上面两个接口的时候出现同名的情况,如果使用第一种,实现方式,无法区分这个实现的这个个方式是那个接口中的 void ITest1.Method1() { Console.Write("ITest1.Method1"); } void ITest2.Methid1() { Console.Write(" ITest2.Methid1"); } } interface ITest1 { void Method1(); } interface ITest2 { void Methid1(); }
我最开始接触的时候感觉很神奇,但是在实际使用中建议,尽量避免使用这种显示的实现,对于没有初次看代码的人来说,会让人感觉莫名奇妙,明明在类中实现了这个方法,为什么在new出来的实例中竟然找不到该方法。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析