接口继承的声明问题
Written by Allen Lee
某天,小新问我这样一个问题:
类System.Collections.CollectionBase是从IList、ICollection继承而来,IList是从ICollection和IEnumerable继承而来,那CollectionBase为什么还要从ICollection继承呢?
我们先来看看这些类和接口在MSDN文档中的声明:
publicinterfaceIEnumerable
publicinterfaceICollection:IEnumerable
publicinterfaceIList:ICollection,IEnumerable
publicabstractclassCollectionBase:IList,ICollection,IEnumerable
根据接口继承的规则,我们知道CollectionBase只需要声明实现IList,就必须同时实现ICollection,也就必须实现IEnumerable,那么,我们为什么还要明确地把所有的这些接口都写下来呢?
换句话说,下面两种声明没有实质的区别:
//Code#1
publicinterfaceIEnumerable
publicinterfaceICollection:IEnumerable
publicinterfaceIList:ICollection,IEnumerable
publicclassArrayList:IList,ICollection,IEnumerable,ICloneable
//Code#2
publicinterfaceIEnumerable
publicinterfaceICollection:IEnumerable
publicinterfaceIList:ICollection
publicclassArrayList:IList,ICloneable
那为何MSDN要使用上面那种呢?我和小新讨论后,一致认为这样做仅仅为了提高代码的可读性。为了验证我们的想法,我分别发邮件给Eric Gunnerson(Eric是C# Compiler Team的成员)和Kit George(Kit是BCL Team的成员)询问这个问题,他们的回信如下:
Allen,
I think that readability would be the primary reason people would do this.
Eric |
今天,我查看微软的Rotor源代码,发现ArrayList的声明的确是Code #1的做法,不过Mono(ver. 1.1.2 Development Version)就采用了Code #2的做法。
所以,以后如果你再碰到到这样的情况,你可以轻松的笑一声:“这样做是为了提高代码的可读性的!”
分享到:
相关推荐
BCL easyPDF Printer Driver 是一个易于使用的PDF创建工具,能够在您的协作环境中很好的工作,为您的员工/客户提供高质量、快速可靠的PDF创建功能。 高质量 easyPDF Personal Printer Driver 能够生成高质量的PDF...
继承 访问修饰字 类和结构 接口 数组 枚举 委托(delegate) . 事件(event) try语句和异常 属性信息 不安全代码和指针 预处理指令 xml文档 第三章.net框架编程 公用类型 数学 字符串 集合 正则...
C#数据访问组件,适合各类数据的保存操作
接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接口必须提供的成员。接口可以是命名空间或类的...
BCL-2抑癌作用的展望,杜星,付旭锋,bcl-2是目前研究最深入和广泛的调控细胞凋亡的基因,具有抑制细胞凋亡的促癌功能和抑制细胞增殖的抑癌功能。其促癌机制已揭示的较�
miR-24抑制BCL2L11表达促进胰腺癌生长的机制研究,刘锐,巴一,目的:旨在研究BCL2L11表达异常在胰腺癌发病中的调控机制,并探索miRNA-BCL2L11信号通路对胰腺癌增殖、凋亡等生物学行为的影响。方法:通�
Bcl-2基因家族与细胞凋亡研究进展,付笑迎,马东礼,细胞凋亡作为一种特殊的细胞死亡方式,在生物体的进化、内环境的稳定以及多个系统的发育中起着重要的作用,具有复杂的分子生物学
槲皮素对LPS诱导孕鼠子宫内膜细胞Bcl-2/Bax凋亡蛋白表达的影响,林燕燕,杜西翠,为了研究槲皮素对细菌脂多糖(LPS)诱导孕鼠子宫内膜细胞Bcl-2/Bax凋亡蛋白表达的影响, 体内试验将25只孕4 d昆明小鼠随机分为5组,...
BCL2A1在小鼠创伤性脑损伤及体外培养的小胶质细胞中表达上调,王丹,赵经纬,目的:创伤性脑损伤(Traumatic brain injury, TBI))是致死或致残的主要原因之一。TBI可诱发中枢神经系统炎症反应,而介导神经系统炎症...
性脑病中TNF-α-NF-κB-Bcl-2信号通路的调节作用,柯荔宁,曲肖风,脑卒中是60岁以上老年人死亡的最常见原因之一,其中急性性脑梗死是最常见的脑卒中类型,占我国脑卒中总数的69.6%~70.8%。目�
nm23、EGFR和Bcl-2蛋白在肺癌组织中的表达及临床意义,闫堃,纪宗正,目的:观察nm23、EGFR和Bcl-2在人肺癌中的表达,探讨其与肺癌临床生物学行为的关系。方法:采用免疫组织化学UltrasensitiveTM S-P法,检测了
高频重复经颅磁刺激对脑梗死后学习记忆功能及pCREB、bcl-2、bax表达的影响,赵秀秀,韩肖华,目的:研究高频重复经颅磁刺激对脑梗死大鼠学习记忆的影响,并探讨其可能机制。 方法:采用大脑中动脉阻塞再灌注方法...
益髓颗粒影响ITP小鼠脾淋巴细胞凋亡及Bcl-2、Bax蛋白表达研究,吴晓勇,李冬云,目的:观察益髓颗粒对免疫性血小板减少性紫癜(ITP)小鼠脾淋巴细胞凋亡及Bcl-2、Bax蛋白表达的影响。方法:40只Balb/c小鼠随机分为正...
leuze BCL 504i ON 100 固定式条码阅读器 TD_BCL504_en_50105491
这里的愿望是使C#编程更加可靠,并使工程师的惯性朝着声明性和功能性代码的方向发展,而不是向命令性的方向发展。 在Twitter上作者: : 指数 这个库开始尝试处理C#中的问题,在使用Haskell和F#之后开始让我...
leuze BCL 504i ON 100 固定式条码阅读器 TD_BCL504_zh 中文说明书 50105491
bcl348i leuze 条码扫描装置 劳易测 操作说明手册
p16INK4A和bcl.docx
NextSeq .bcl转换bcl_to_fastq运行带有可选效果的bcl2fastq到“样本表”,并将跨通道的读取按样本连接到R1和R2中。 默认情况下,成功时将删除各个通道的不确定和读取,并将所有读取放置在BaseCalls目录中。 在bcl2...