如您所知,C#中的数组实现了IList,以及其他接口(interface)。但是,不知何故,他们在没有公开实现IList的Count属性的情况下这样做!数组只有Length属性。这是C#/.NET违反其自身接口(interface)实现规则的明显示例,还是我遗漏了什么? 最佳答案 Soasyoumayknow,arraysinC#implementIList,amongotherinterfaces嗯,是的,呃不,不是真的。这是.NET4框架中Array类的声明:[Serializable,ComVisible(true)]publ
如您所知,C#中的数组实现了IList,以及其他接口(interface)。但是,不知何故,他们在没有公开实现IList的Count属性的情况下这样做!数组只有Length属性。这是C#/.NET违反其自身接口(interface)实现规则的明显示例,还是我遗漏了什么? 最佳答案 Soasyoumayknow,arraysinC#implementIList,amongotherinterfaces嗯,是的,呃不,不是真的。这是.NET4框架中Array类的声明:[Serializable,ComVisible(true)]publ
我对应该从我的公共(public)API方法和属性返回哪种集合类型感到困惑。我想到的集合是IList、ICollection和Collection。返回这些类型中的一种总是优于其他类型,还是取决于具体情况? 最佳答案 ICollection是一个公开集合语义的接口(interface),例如Add(),Remove(),和Count.Collection是ICollection的具体实现界面。IList本质上是一个ICollection具有基于随机顺序的访问。在这种情况下,您应该决定您的结果是否需要列表语义,例如基于顺序的索引(然后
我对应该从我的公共(public)API方法和属性返回哪种集合类型感到困惑。我想到的集合是IList、ICollection和Collection。返回这些类型中的一种总是优于其他类型,还是取决于具体情况? 最佳答案 ICollection是一个公开集合语义的接口(interface),例如Add(),Remove(),和Count.Collection是ICollection的具体实现界面。IList本质上是一个ICollection具有基于随机顺序的访问。在这种情况下,您应该决定您的结果是否需要列表语义,例如基于顺序的索引(然后
很容易从.NET通用字典中获取键的值:Dictionarygreek=newDictionary();greek.Add(1,"Alpha");greek.Add(2,"Beta");stringsecondGreek=greek[2];//Beta但是尝试获取给定值的键并不那么简单,因为可能有多个键:int[]betaKeys=greek.WhatDoIPutHere("Beta");//expectingsingle2 最佳答案 好的,这是多个双向版本:usingSystem;usingSystem.Collections.Ge
很容易从.NET通用字典中获取键的值:Dictionarygreek=newDictionary();greek.Add(1,"Alpha");greek.Add(2,"Beta");stringsecondGreek=greek[2];//Beta但是尝试获取给定值的键并不那么简单,因为可能有多个键:int[]betaKeys=greek.WhatDoIPutHere("Beta");//expectingsingle2 最佳答案 好的,这是多个双向版本:usingSystem;usingSystem.Collections.Ge
参见System.Array类的定义publicabstractclassArray:IList,...理论上,我应该能写到这里,并且开心int[]list=newint[]{};IListiList=(IList)list;我还应该能够调用iList中的任何方法ilist.Add(1);//exceptionhere我的问题不是为什么会出现异常,而是为什么Array实现IList? 最佳答案 因为数组允许通过索引快速访问,并且IList/IList是唯一支持此功能的集合接口(interface)。所以也许你真正的问题是“为什么没有
参见System.Array类的定义publicabstractclassArray:IList,...理论上,我应该能写到这里,并且开心int[]list=newint[]{};IListiList=(IList)list;我还应该能够调用iList中的任何方法ilist.Add(1);//exceptionhere我的问题不是为什么会出现异常,而是为什么Array实现IList? 最佳答案 因为数组允许通过索引快速访问,并且IList/IList是唯一支持此功能的集合接口(interface)。所以也许你真正的问题是“为什么没有
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion谁能向我解释为什么我想在C#中使用IList而不是List?相关问题:WhyisitconsideredbadtoexposeList
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion谁能向我解释为什么我想在C#中使用IList而不是List?相关问题:WhyisitconsideredbadtoexposeList