草庐IT

ienumerable

全部标签

c# - 为什么 C# 编译器对 double IEnumerable<T> 和 foreach T 很满意?

我知道这段代码行不通(以行之有效的方式编写代码也没有问题)。我想知道编译器如何在没有任何错误的情况下构建。如果你在哪里运行它,你会得到运行时错误?(假设数据不为空)usingSystem;usingSystem.Collections.Generic;publicclassClass1{publicvoidMain(){IEnumerable>data=null;foreach(Foofooindata){foo.Bar();}}}publicclassFoo{publicvoidBar(){}} 最佳答案 这是因为foreach不

c# - 类型 'IEnumerable<>' 在未引用的程序集中定义

我已将以下nuget包添加到我的MVC5应用程序X.PagedList.Mvc我在我的Controller/View中返回结果如下://RepopublicIPagedListGetPagedPosts(intpageNumber,intpageSize){varposts=_context.Post.Include(x=>x.Category).Include(x=>x.Type);//Returnapagedlistreturnposts.ToPagedList(pageNumber,pageSize);}//ViewmodelpublicclassPostViewModel{pu

c# - IEqualityComparer 和 Contains 方法

我有一个带有这2个枚举字段的简单类,我试图在集合(List)中找到该对象的一项,但Contains方法无法正常工作publicclassCalculator:IEqualityComparer{publicDashboardsComputationModeComputationMode{get;set;}publicModesMode{get;set;}publicCalculator(DashboardsComputationModedashboardsComputationMode,Modesmode){ComputationMode=dashboardsComputationMo

c# - 从 IEnumerable 中过滤重复项

我有这个代码:classMyObj{intId;stringName;stringLocation;}IEnumerablelist;我想像这样将列表转换成字典:list.ToDictionary(x=>x.Name);但它告诉我我有重复的key。如何只保留每个键的第一项? 最佳答案 我想最简单的方法是按键分组并取每组的第一个元素:list.GroupBy(x=>x.name).Select(g=>g.First()).ToDictionary(x=>x.name);或者,如果您的对象实现了IEquatable,您可以使用Disti

嵌套方法中的 C# yield

如果我单步执行以下代码,将跳过对ReturnOne()的调用。staticIEnumerableOneThroughFive(){ReturnOne();yieldreturn2;yieldreturn3;yieldreturn4;yieldreturn5;}staticIEnumeratorReturnOne(){yieldreturn1;}我只能假设编译器将其删除,因为我所做的是无效的。我希望能够将我的枚举隔离为各种方法。这可能吗? 最佳答案 您实际上并没有使用ReturnOne的结果。您正在调用该方法,并忽略返回值……这意味着

c# - Java 迭代器与 C# IEnumerable

我注意到Java的Iterator(接口(interface))类似于C#的IEnumerable,但是有没有办法像这样使用它:privateIEnumerableit;it=labels.iterator();在Java中我可以这样做:privateIteratorit;it=labels.iterator();Java的Iterator接口(interface)在C#中的等效项是什么? 最佳答案 它不经常使用,但类比是IEnumerator界面:varenumerator=labels.GetEnumerator();.NET的

重叠的IEnumerable系列打印

我正在将XML文件的内容读取到IEnumerable集合(数组)中,我需要在单独的页面上打印每个迭代(喜欢XML数据的块)。我正在使用print()函数和e.hasmorepages。我的问题是,通过每次打印的iEnumerable系列的所有迭代循环循环,因此我要打印正确的页面,但是每个页面都包含彼此之上的所有迭代,而不是每页一个。谁能给我一个解决方案或更好地管理此过程的方法的想法?这是代码的相关部分...//PrintEmployeeGeneralinfoforeach(EmployeeInfoitminGEmployeeXGD.GetEmployeeGeneralData()){try{e

c# - 我可以在 C# 中使用无类型集合吗

我正在将一些Java代码移植到C#,我遇到了这个:List据我所知,这是一个Unknown类型的List。因此,我可以在其他地方指定类型(在运行时?我不确定)。C#中的基本等价物是什么? 最佳答案 我认为与Java的List最匹配将是C#4.0IEnumerable如果你有一个方法需要List比你可以用List调用它和List像这样:ListobjList=newList();ListstrList=newList();doSomething(objList);//OKdoSomething(strList);//OKpublicv

c# - Java 中 C# IEnumerable 的等价物是什么?具有协变能力的,而不是可迭代的

这种协变在C#中是可能的:IEnumerablea=newList();IEnumerableb=newList();a=b;...classA{}classB:A{}这在Java中是不可能的:(可迭代:在这个问题中看到JavaArrays&Generics:JavaEquivalenttoC#IEnumerable)。Iterablea=newArrayList();Iterableb=newArrayList();a=b;...classA{}classBextendsA{}使用Iterable,Java看不到这两个集合是协变的Java中哪个可迭代/可枚举接口(interface)

c++ - 我如何在 C++ 中遍历集合?

简单地说,如果我有一个集合和vector,我该如何创建一个可以将两者作为参数处理的通用方法。我想做的就是遍历任一类型的集合。听起来应该是微不足道的,但我遗漏了一些东西。voidprintMeSomeStrings(somebaseclassstrings){for(auto&str:strings){cout在C#中,我会传递IEnumerable或类似的东西。然后我可以遍历集合。任何解释答案的一般阅读将不胜感激。 最佳答案 您可以使用模板。例如:#includetemplatevoidfoo(Cconst&c){std::cout