草庐IT

c# - 将 List<List<object>> 转换为 IList<IList<object>>

我写了一个方法是publicList>Fetch(stringdata),我在里面创造List>p=newList>();我老板现在想返回IList>而不是List>即publicIList>Fetch(stringdata),所以当我尝试做return(IList>)p;//throwsanexception我如何转换List>至IList>回到List> 最佳答案 您不能通过直接转换执行该转换-这不安全。相反,您应该使用:IList>ret=newList>();然后对于每个“子列表”,您可以使用://Orwhateverret

c# - 空合并运算符 IList、Array、Enumerable.foreach 中的 Empty

在thisquestion我发现了以下内容:int[]array=null;foreach(intiinarray??Enumerable.Empty()){System.Console.WriteLine(string.Format("{0}",i));}和int[]returnArray=Do.Something()??newint[]{};和...??newint[0]在NotifyCollectionChangedEventHandler中我想申请Enumerable.Empty像这样:foreach(DrawingPointdrawingPointine.OldItems??

c# - 将 IList 中的元素添加到 ObservableCollection

我有一个ObservableCollection,我想将IList的内容设置为这个。现在我可以创建一个新的集合实例..:publicObservableCollectionobs=newObservableCollection();publicvoidFoo(IListlist){obs=newObservableCollection(list);}但是我怎样才能实际获取IList的内容并将其添加到我现有的ObservableCollection中呢?我必须遍历所有元素,还是有更好的方法?publicvoidFoo(IListlist){foreach(varelminlist)obs

c# - 为什么 List<T> 实现 IList<T>、ICollection<T> 和 IEnumerable<T>?

如果你去定义List你会看到以下内容:publicclassList:IList,ICollection,IEnumerableIList已经继承自ICollection和IEnumerable.如果List还不够吗?仅实现IList? 最佳答案 是的,在这种情况下没有区别。在某些情况下,它可以有所作为,如果您使用的基类已经实现了一个接口(interface),但您希望自己显式地重新实现它——但在这种情况下,没有基类(除了隐式object),它的行为方式完全相同。与我的记忆相反,我认为无论代码是否显式声明所有接口(interface

c# - 为什么 `IList<T>` 不继承自 `IReadOnlyList<T>` ?

当IReadOnlyList是在.NET4.5中引入的,有那么一刻我认为拼图的缺失部分终于被插入到位:一种传递真正的只读可索引接口(interface)的方法,以前我必须使用我自己的只读接口(interface)并创建包装类围绕一切。我期望界面被放置在“自然”层次结构中,理想情况下是:IEnumerable.GetEnumerator()->IReadOnlyCollection:IEnumerable.Count->IReadOnlyList:IReadOnlyCollection.Item[...]->IList:IReadOnlyList.Add(...).Clear().Con

c# - 为什么 LinkedList(T) 不实现 IList(T) 接口(interface)?

在C#中,LinkedList(T)类不实现IList(T)接口(interface)。但是,List(T)类确实实现了IList(T)。为什么会有这种差异?从功能上讲,它们都是列表,因此这种设计选择似乎很奇怪。现在很难将实现从List(T)切换到LinkedList(T)。 最佳答案 IList接口(interface)包含一个索引器,该索引器不是您在LinkedList上期望的功能.List可以确保访问O(1)中的项目,LinkedList根据it'sit结构的定义,它无法提供对O(1)中项目的访问。

c# - 数组如何实现 IList<T> 而不在 C# 中实现属性 "Count"?

这个问题在这里已经有了答案:HowdoarraysinC#partiallyimplementIList?(6个答案)关闭9年前。很长一段时间以来,我对以下内容感到好奇:int[]array=newint[1];intiArrayLength=array.Length;//1由于数组实现了IList接口(interface),因此允许:intiArrayCount=((IList)array).Count;//still1但是:intiArrayCount=array.Count;//Compileerror.WHY?intiArrayLength=array.Length;//Thi

c# - IList<T> 和 IReadOnlyList<T>

如果我有一个方法需要一个参数,有一个Count属性(property)有一个整数索引器(只获取)这个参数的类型应该是什么?我会选择IList在.NET4.5之前,因为没有其他可索引的集合接口(interface)和数组实现它,这是一个很大的优势。但是.NET4.5引入了新的IReadOnlyList接口(interface),我希望我的方法也支持它。我如何编写此方法以同时支持IList和IReadOnlyList又不违背DRY之类的基本原则?编辑:丹尼尔的回答给了我一些想法:publicvoidFoo(IListlist)=>Foo(list,list.Count,(c,i)=>c[i

c# - 如何将 Dictionary<TKey, TValue> 的所有值作为 IList<TValue> 获取?

我有以下字典:IDictionary>myDictionary我想将字典中的所有值作为IList获取....只是为了添加一些关于我是如何陷入这种情况的背景......我有一个方法可以获取MyClass列表。然后我有另一种方法将该列表转换为字典,其中键是MyClass的id。稍后......并且无法访问该原始列表......我需要获取MyClass的原始未分组列表。当我将myDictionary.Values.ToList()传递给采用IList的方法时,出现编译错误,指出它无法从System.Collections.Generic.List>到:System.Collections.G

c# - 我应该返回 IEnumerable 还是 IList?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭3年前。Improvethisquestion我希望从一个方法中返回一个有序的项目列表。我的返回类型应该是IEnumerable还是IList?