zoukankan      html  css  js  c++  java
  • 关于C#的接口的碎碎念

    首先明确两件事情,1.C#的接口是引用类型的。2.值类型转引用类型时会发生装箱。

    这样在我们设计一个容器类的时候大概率会遇到这种事:

    我们希望继承某个接口用以表明身份,比如IEnumerable 或 IEnumerable<>这样我们需要一个GetEnumerator方法,然而我们又发现该接口的迭代器返回类型为IEnumerator<>,这时,如果我们老老实实的实现一个返回IEnumerator<>的GetEnumerator时会发现我们应该new了一个class,敏感的你肯定会感觉到此时会产生GC。尽管这个GC的量不会太大,副反应也不会真的严重到影响你程序的运行,但是,你知道确实有不产生GC的写法。让GetEnumerator返回一个Struct。你知道只要这个Struct继承一个IEnumerator就可以让foreach正常跑起来,也没有GC,假如你写的对,运行时一切完美。但是我们的代码?已经有很多看起来坑坑洼洼的地方了。就像下面那样。

     IEnumerator IEnumerable.GetEnumerator(){throw new NotImplementedException();
    

    这个时候我就会纳闷,我当初费劲巴拉继承IEnumerable这种接口要干嘛啊?

    所以说,面向接口编程有时还真是挺蛋疼的。

  • 相关阅读:
    杭电ACM 2052 Picture
    杭电ACM求平均成绩
    杭电ACM水仙花数
    cigarettes
    分数加减法
    推荐几个sql server牛人的博客
    npm 介绍
    centos Flash Player插件的安装
    node.js学习(1)
    查询功能:yum [list|info|search|provides|whatprovides] 参数
  • 原文地址:https://www.cnblogs.com/fastcam/p/14987446.html
Copyright © 2011-2022 走看看