C#   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了 C#8.0之后接口已经不再单纯了,我懵逼了!大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一:背景

1. 讲故事

大家在经过面向对象洗礼的时候,都了解过接口,而且知道它是一种自上而下的设计思路,举个例子,我们电脑上都有 USB 2.0 接口,蓝牙耳机实现了它可以进行充电,移动硬盘实现了它可以在电脑端显示硬盘内容,蓝牙鼠标实现了它可以进行鼠标操控,可以看出USB插口做出来后,谁来实现谁也搞不清楚,实现者能做出什么东西,谁也不知道,这就是接口的魅力,落实在 C# 上就是接口中那一个一个stub 方法,留给未来的有缘人去实现,如下代码:


    public interface IUsb
    {
        void Execute();
    }

2. 你可能会有的疑惑

有些朋友可能会说,码农胡言乱语,接口不光可以定义实例方法,还可以定义 属性,索引器,事件 等等。。。 如下代码


    public interface IUsb
    {
        event Action<String> action;

        String Name { get; set; }

        String this[String key]
        {
            get; set;
        }

        void Execute();
    }

哈哈,果然是一个好问题,没错,属性,索引器和事件都可以定义在接口中,但请不要忘了,你列举的这些都是编译器层面的语法糖而已,言外之意就是你看过 编译后的 IL 代码吗? 如下图所示:

 C#8.0之后接口已经不再单纯了,我懵逼了!

可以看到,那些所谓的语法糖在IL层面统统是方法,这就很好的解释了为啥接口中只能定义方法的原因。

3. 现在的接口真的变了

然而这种平衡在 C# 8.0 中被打破,现如今的接口除了常规的实例方法,还可以定义任何标记为 static 的字段,属性方法,构造函数 甚至还可以是 实例方法认实现,这就很奇葩了。。。不得不大吼一声,

大佬总结

以上是大佬教程为你收集整理的 C#8.0之后接口已经不再单纯了,我懵逼了!全部内容,希望文章能够帮你解决 C#8.0之后接口已经不再单纯了,我懵逼了!所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: