2016-03-20 20:477240
C#不支持类的多继承,然而却可以继承多个接口。简单的就不说了,来看看下面的例子:
public interface IRead { string GetText(); } public interface IWrite { string GetText(); }
对于上面的这种情况,如果一个类同时继承上面两个接口,那么如何去实现这两个名字相同的方法呢?
显示接口方法(EIMI)
public class MyCpu:IRead,IWrite { string IRead.GetText() { return "这个方法实现IRead的方法"; } string IWrite.GetText() { return "这个方法实现IWrite的方法"; } public string GetText() { return "这个方法实现自己独有的方法"; } }
如上图,只需要在方法前面加上接口名即可。然而显示接口方法只能是私有方法。
然而这种方法要慎用,因为使用了这种方法后,值类型的实例在转换成接口时会发生装箱。因为是私有的,所以也不能被派生类调用。
最重要的是显示接口方法的调用很奇葩:
var cpu = new MyCpu(); Console.WriteLine(cpu.GetText()); Console.WriteLine(((IRead)cpu).GetText()); IWrite b = cpu; Console.WriteLine(b.GetText()); Console.ReadLine();
必须先转一道再调用,会让使用的人很困惑。
用基类还是用接口
- 基类更多的是一个身份上的事,比如鸟是燕子的基类。而接口是一个行为上的事,比如鸟和飞机都能飞,那么飞就是一个接口。
- 基类可以为派生类提供良好的默认实现。
- 基类添加一个方法,派生类自动就可以继承。而接口添加一个方法,派生类还需要重写。
然而我认为实际上仅仅用第一个来判断就好了,因为它更偏向于基于实际业务去考虑到底用基类还是接口。
作者:韩子卢
出处:https://www.cnblogs.com/vvjiang/
本博客文章均为作者原创,转载请注明作者和原文链接。
出处:https://www.cnblogs.com/vvjiang/
本博客文章均为作者原创,转载请注明作者和原文链接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构