大佬教程收集整理的这篇文章主要介绍了 C#8.0之后接口已经不再单纯了,我懵逼了!,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
大家在经过面向对象洗礼的时候,都了解过接口,而且知道它是一种自上而下的设计思路,举个例子,我们电脑上都有 USB 2.0 接口,蓝牙耳机实现了它可以进行充电,移动硬盘实现了它可以在电脑端显示硬盘内容,蓝牙鼠标实现了它可以进行鼠标操控,可以看出USB插口做出来后,谁来实现谁也搞不清楚,实现者能做出什么东西,谁也不知道,这就是接口的魅力,落实在 C# 上就是接口中那一个一个的 stub 方法,留给未来的有缘人去实现,如下代码:
public interface IUsb
{
void Execute();
}
有些朋友可能会说,码农胡言乱语,接口不光可以定义实例方法,还可以定义 属性,索引器,事件 等等。。。 如下代码:
public interface IUsb
{
event Action<String> action;
String Name { get; set; }
String this[String key]
{
get; set;
}
void Execute();
}
哈哈,果然是一个好问题,没错,属性,索引器和事件都可以定义在接口中,但请不要忘了,你列举的这些都是编译器层面的语法糖而已,言外之意就是你看过 编译后的 IL 代码吗? 如下图所示:
可以看到,那些所谓的语法糖在IL层面统统是方法,这就很好的解释了为啥接口中只能定义方法的原因。
然而这种平衡在 C# 8.0 中被打破,现如今的接口除了常规的实例方法,还可以定义任何标记为 static 的字段,属性,方法,构造函数 甚至还可以是 实例方法的默认实现,这就很奇葩了。。。不得不大吼一声,
以上是大佬教程为你收集整理的 C#8.0之后接口已经不再单纯了,我懵逼了!全部内容,希望文章能够帮你解决 C#8.0之后接口已经不再单纯了,我懵逼了!所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。