草庐IT

$foreach

全部标签

C# foreach 派生类的行为?

现在我有一个相对简单的类设置:classA{//stuff}classB:A{//morestuff}publicListListOfObjects;如果我这样做会发生什么foreach(BiinListOfObjects)我只能得到类型B的对象吗?它会应用一些OO魔法并将所有As转换为Bs吗?这还能行得通吗? 最佳答案 如果列表中有A(或其他不是B或B的子类的东西),那么它将简单地打破无效类型转换。你可能想要:foreach(BiinListOfObjects.OfType()){...}在.NET3.5中。(我假设列表本身是非空

c# - foreach 与 SqlDataReader?

我有以下代码:SqlDataReaderreader=getAddressQuery.sqlReader;while(reader.Read()){foreach(Objectobinreader){someText.InnerText=someText.InnerText+""+ob.ToString();}}foreach循环中的代码不执行。但是,我可以这样做:SqlDataReaderreader=getAddressQuery.sqlReader;while(reader.Read()){someText.InnerText=reader[0].ToString();}哪个有效

c# - Parallel.Foreach 给出错误 "Index was outside the bounds of the array "

我在parallel.foreach中遇到了一些问题,即“索引超出了数组的范围”。我附上了parallel.foreach的一些代码以及崩溃的地方。varlstFRItems=session.CreateCriteria().Add(Restrictions.Eq("TSCEnterprise.FEnterpriseID",EnterpriseId)).AddOrder(Order.Asc("FName")).List();ListlstItemAccount=newList();varListAccounts=session.CreateCriteria().List();//lst

c# - C# 中的 lambda 如何绑定(bind)到 foreach 中的枚举数?

我刚刚遇到了最意想不到的行为。我确信它以这种方式工作是有充分理由的。谁能帮忙解释一下?考虑这段代码:varnums=newint[]{1,2,3,4};varactions=newList>();foreach(varnuminnums){actions.Add(()=>num);}foreach(varnuminnums){varx=num;actions.Add(()=>x);}foreach(varactioninactions){Debug.Write(action()+"");}输出结果让我有点意外:44441234显然,lambda引用枚举器的方式有问题。在foreach的

c# - Parallel.Foreach 与正常 ForEach 一样快/慢

更新:我使用线程在内核数量(在我的案例中为8个)中拆分循环,并且整个循环在不到1秒的时间内完成。所以问题不在于,使用线程操作不会更快。为什么ParralelExtension在这种情况下会失败?大家好。我想用Parrallel.Foreach转换我的ForEach。问题是,并行化几乎没有给我带来任何好处。原文:foreach(Entities.Buchungbuchunginbuchungen){Int32categoryID=manager.GetCategoryID(newRegelengine.Booking(buchung));//Average4msbuchung.Categ

c# - 为什么foreach循环在C#中是只读的

为什么foreach循环是只读的?我的意思是您可以获取数据,但不能增加++或减少--。背后有什么原因吗?是的,我是初学者:)例子:int[]myArray={1,2,3};foreach(intnuminmyArray){num+=1;} 最佳答案 这是因为foreach旨在遍历容器,确保在不更改容器的情况下每个项目都被恰好访问一次,以避免令人讨厌的副作用。参见:foreachinMSDN如果您的意思是为什么对整数等元素的更改不会影响整数容器,那是因为在这种情况下迭代的变量将是值类型并被复制,例如://Warning:Doesnot

c# - 用 foreach 遍历 Dictionary,这是按什么顺序完成的?

假设我有一个字典,我按特定顺序添加每个键和值条目。现在,如果我希望稍后能够以添加条目的相同顺序迭代此Dictionary,这是我在该字典上使用简单的foreach循环获得的顺序吗?如果没有,我会很高兴听到我该怎么做,我知道这可以用List而不是Dictionary轻松完成,但我不想到。谢谢 最佳答案 普通的Dictionary不保证项目的顺序。你需要OrderedDictionary如果您想维护添加到其中的订单项目。请注意,在.Net框架中没有此类的通用版本,因此要么必须放弃一些类型安全性,要么找到其他实现(即https://www

c# - Foreach/For 循环替代 lambda 函数?

我们使用for或foreach循环遍历集合并处理每个条目。C#中所有这些用于集合的新lambda函数是否有替代方案?传统的做法foreach(varvinvs){Console.write(v);}有没有类似的东西?vs.foreach(v=>console.write(v)) 最佳答案 List有ForEach方法,但是IEnumerable没有。关于这个有很多问题/答案。我认为它没有在IEnumerable中实现的主要原因是Enumerables上的Linq“意味着”没有副作用,因为它是一种查询语言。EricLippert在他的

c# - foreach(... in ...) 或 .ForEach();就是那个问题

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:C#foreachvsfunctionaleach这是一个关于代码可读性的问题。我有一个XDocument和一个List包含我需要屏蔽的敏感信息的元素的名称(在此示例中用下划线替换)。XDocumentxDoc;ListpropertiesToMask;这可以用两种方式编写,使用传统的foreach循环,或使用.ForEach具有lamba语法的方法。foreach(stringpropertyToMaskinpropertiesToMask){foreach(XElementelementinxDoc.Des

c# - 如何从嵌套方法 'continue' ForEach 循环?

我有一个ForEach循环来处理相当大的联系人列表。我没有在这个主循环中做一堆处理,而是调用一个方法,该方法又调用一个方法等。方法调用其他类中的其他方法,可能是其他命名空间。如果检测到条件并且我想继续进行下一个联系,我该如何中断当前方法?我在距主ForEach循环几个级别的方法中。通常,您可以在ForEach中使用continue关键字跳到集合中的下一个元素。continue在这种情况下不是一个选项。当我键入continue时,它会带有红色下划线和“Unresolved消息”注释。那么,我该怎么办? 最佳答案 你走错了路;退后一步,