草庐IT

ienumerator

全部标签

c# - 我是否需要考虑处置我使用的任何 IEnumerable<T>?

最近有人向我指出各种Linq扩展方法(例如Where、Select等)返回一个IEnumerable。这也恰好是IDisposable.以下评估为Truenewint[2]{0,1}.Select(x=>x*2)isIDisposable我需要处理Where的结果吗?表达?每当我调用返回IEnumerable的方法时,我是否(可能)承担在完成处理后调用dispose的责任? 最佳答案 不,你不需要担心这个。他们返回IDisposable的事实implementation是一个实现细节-这是因为C#编译器的Microsoft实现中的迭

c# - 为什么 IEnumerator<T> 继承自 IDisposable 而非泛型 IEnumerator 却没有?

我注意到通用IEnumerator继承自IDisposable,但非泛型接口(interface)IEnumerator没有。为什么要这样设计?通常,我们使用foreach语句来遍历一个IEnumerator实例。foreach的生成代码实际上有一个try-finallyblock,它在finally中调用Dispose()。 最佳答案 基本上这是一个疏忽。在C#1.0中,foreach从未调用Dispose1。使用C#1.2(在VS2003中引入-奇怪的是没有1.1)foreach开始入住finally阻止迭代器是否实现IDisp

c# - 多个列表与 IEnumerable.Intersect() 的交集

我有一个列表列表,我想像这样找到交集:varlist1=newList(){1,2,3};varlist2=newList(){2,3,4};varlist3=newList(){3,4,5};varlistOfLists=newList>(){list1,list2,list3};//expectedintersectionisList(){3};有什么方法可以用IEnumerable.Intersect()做到这一点吗?编辑:我应该更清楚这一点:我真的有一个列表列表,我不知道会有多少,上面的三个列表只是一个例子,我有的实际上是一个IEnumerable>解决方案感谢所有出色的回答。

c# - IEnumerable 没有 Count 方法

我有以下方法:publicboolIsValid{get{return(GetRuleViolations().Count()==0);}}publicIEnumerableGetRuleViolations(){//codehere}为什么当我在上面执行.Count()时,它带有红色下划线?我收到以下错误:Error1'System.Collections.Generic.IEnumerable'doesnotcontainadefinitionfor'Count'andnoextensionmethod'Count'acceptingafirstargumentoftype'Sys

c# - 如何遍历支持 IEnumerable 的集合?

如何循环遍历支持IEnumerable的集合? 最佳答案 每个人的正则:foreach(varitemincollection){//doyourstuff} 关于c#-如何遍历支持IEnumerable的集合?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1532814/

c# - IEnumerable<对象> a = new IEnumerable<对象>();我可以这样做吗?

我想创建一个对象的新实例IEnumerable我可以这样做吗?IEnumerablea=newIEnumerable(); 最佳答案 例如,您可以创建List的实例,它实现了IEnumerable.示例:Listlist=newList();list.Add(1);list.Add(4);list.Add(5);IEnumerableen=list;CallFunction(en); 关于c#-IEnumerablea=newIEnumerable();我可以这样做吗?,我们在Stack

c# - 无法从 IEnumerable<T> 转换为 ICollection<T>

我定义了以下内容:publicICollectionItems{get;set;}当我运行这段代码时:Items=_item.Get("001");我收到以下消息:Error3Cannotimplicitlyconverttype'System.Collections.Generic.IEnumerable'to'System.Collections.Generic.ICollection'.Anexplicitconversionexists(areyoumissingacast?)谁能解释一下我做错了什么。我很困惑Enumerable、Collections和使用ToList()之

c# - 从 List 转换为 IEnumerable 格式

IEnumerable_Book_IEList_Book_List如何将_Book_List转换成IEnumerable格式? 最佳答案 您不需要转换它。List实现IEnumerable接口(interface),所以它已经是一个可枚举的。这意味着拥有以下内容是完全没问题的:publicIEnumerableGetBooks(){Listbooks=FetchEmFromSomewhere();returnbooks;}还有:publicvoidProcessBooks(IEnumerablebooks){//dosomethin

c# - IEnumerable 和 Array、IList 和 List 有什么区别?

IEnumerable和Array有什么区别?IList和List有什么区别?这些似乎具有相同的功能。 最佳答案 IEnumerable仅提供最少的“可迭代”功能。您可以遍历序列,仅此而已。这有缺点;例如,使用IEnumerable对元素进行计数或获取第n个元素是非常低效的。但它也有优点;例如,IEnumerable可以是无限序列,如素数序列。Array是一个固定大小的随机访问集合(即您可以对其进行索引)。List是一个具有随机访问权限的可变大小集合(即您可以添加和删除元素)。IList是一个接口(interface),它从各种具体

c# - 将 IList 或 IEnumerable 转换为数组的最佳方法

我有一个HQL查询,它可以生成结果的IList或结果的IEnumerable。但是,我希望它返回我选择的实体数组,实现该目标的最佳方法是什么?我可以枚举它并构建数组,或者使用CopyTo()定义的数组。有没有更好的办法?我采用了CopyTo方法。 最佳答案 您使用的是哪个版本的.NET?如果是.NET3.5,我只需调用ToArray()即可。如果您只有一个非泛型IEnumerable,请执行以下操作:IEnumerablequery=...;MyEntityType[]array=query.Cast().ToArray();如果您