首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在IEnumerable对象的foreach循环中/之后读取APP.config将从集合中删除项

在IEnumerable对象的foreach循环中/之后读取APP.config将从集合中删除项。

在IEnumerable对象的foreach循环中,无法直接删除集合中的项。这是因为foreach循环是基于迭代器模式实现的,它会在每次迭代时访问集合中的下一个元素。如果在循环中删除当前元素,会导致迭代器失效,从而引发异常。

如果需要在循环中删除集合中的项,可以使用一个临时的集合来存储需要删除的项,然后在循环结束后,再通过另一个循环将这些项从原始集合中删除。

以下是一个示例代码:

代码语言:csharp
复制
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };
List<int> itemsToRemove = new List<int>();

foreach (int number in numbers)
{
    if (number % 2 == 0)
    {
        itemsToRemove.Add(number);
    }
}

foreach (int item in itemsToRemove)
{
    numbers.Remove(item);
}

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

在上述代码中,我们首先创建了一个numbers列表,并使用foreach循环遍历该列表。如果列表中的元素是偶数,我们将其添加到itemsToRemove列表中。然后,我们使用另一个foreach循环遍历itemsToRemove列表,并从numbers列表中删除这些项。最后,我们再次使用foreach循环打印剩余的numbers列表中的元素。

需要注意的是,这种删除方式可能会导致性能问题,特别是在处理大型集合时。如果需要频繁地删除集合中的项,建议考虑使用其他数据结构,如HashSet或LinkedList,以提高删除操作的效率。

关于APP.config的读取,可以使用System.Configuration.ConfigurationManager类来读取配置文件中的设置。可以通过以下代码读取APP.config中的设置:

代码语言:csharp
复制
string settingValue = System.Configuration.ConfigurationManager.AppSettings["SettingKey"];

其中,"SettingKey"是APP.config中设置的键名,settingValue是对应的值。

腾讯云提供了多个与云计算相关的产品,包括云服务器、云数据库、云存储等。具体推荐的产品取决于具体的需求和场景。你可以访问腾讯云的官方网站(https://cloud.tencent.com/)了解更多关于腾讯云产品的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C#2.0新增功能05 迭代器

到达 yield return 语句时,会记住当前代码位置。 下次调用迭代器函数时,将从该位置重新开始执行。 通过 foreach 语句或 LINQ 查询从客户端代码中使用迭代器。   ...以下示例foreach 循环首次迭代导致 SomeNumbers 迭代器方法继续执行,直至到达第一个 yield return 语句。 此迭代返回值为 3,并保留当前迭代器方法位置。...循环下次迭代,迭代器方法执行将从其暂停位置继续,直至到达 yield return 语句后才会停止。 此迭代返回值为 5,并再次保留当前迭代器方法位置。... foreach 循环(或对 IEnumerator.MoveNext 直接调用)每次后续迭代,下一个迭代器代码体都会在上一个 yield return 语句之后恢复。...迭代器使用 需要使用复杂代码填充列表序列时,使用迭代器可保持 foreach 循环简单性。 需执行以下操作时,这可能很有用: 第一次 foreach 循环迭代之后,修改列表序列。

69950

C#基础知识系列九(对IEnumerable和IEnumerator接口糊涂认识)

先来看一下IEnumerable接口,其实看过这个接口之后,发现它其实是非常简单,只包含一个方法GetEnumerator(),它返回一个可用于循环访问集合IEnumerator对象,如下面截图所示...它是一个真正集合访问器,没有它,就不能使用foreach语句遍历集合或数组,因为只有IEnumerator对象才能访问集合,假如连集合都访问不了,那么进行集合循环遍历是不可能事情了。...那至少应该有一个Current属性,来获取当前集合吧。MoveNext方法只是将游标的内部位置向前移动(就是移到一下个元素而已),要想进行循环遍历,不向前移动一下怎么行呢?...,就可以调用时用foreach了。...自定义两个接口并进行实现   上面我们是通过继承微软类库接口来实现实体集合foreach遍历。下面我们来演示一下完全通过自己创建接口来实现自己定义实例集合foreach遍历。

54320

.NET Core采用全新配置系统: 聊聊默认支持各种配置源

MemoryConfigurationProvider还定义了一个Add方法是我们可以在任何时候都可以向配置字典添加一个新配置。...方法被执行之后,它只需要将符合条件筛选出来并添加到自己配置字典即可。...值得一提是,如果我们创建EnvironmentVariablesConfigurationProvider对象是指定了用于筛选环境变量前缀,当符合条件环境变量被添加到自身配置字典之后,这个前缀也会从元素...后续代码我们已经很熟悉了,即采用Options模式读取环境变量并绑定为一个Profile对象。...实现Build方法,它根据这两个属性创建出一个CommandLineConfigurationProvider对象

73590

C#规范整理·集合和Linq

}, mike, null }; 重点:初始化设定绝不仅仅是为了对象集合初始化方便,它更重要作用是为LINQ查询匿名类型进行属性初始化。...由于LINQ查询返回集合匿名类型属性都是只读,如果需要为匿名类型属性赋值,或者增加属性,只能通过初始化设定来进行。初始化设定还能为属性使用表达式。...队列Queue<T>遵循是先入先出模式,它在集合末尾添加元素,集合起始位置删除元素。 栈Stack<T>遵循是后入先出模式,它在集合末尾添加元素,同时也集合末尾删除元素。...当我们觉得集合插入和删除数据很慢时,就可以考虑使用链表。...简单类型必须是一个非空初始值,复杂类型则是一个以new开头初始化; 匿名类型属性是只读,没有属性设置器,它一旦被初始化就不可更改; 如果两个匿名类型属性值相同,那么就认为两个匿名类型相等; 匿名类型可以环中用作初始化器

15830

.NET面试题系列 - IEnumerable

想知道如何实现方法GetEnumerator,不妨思考下实现了GetEnumerator之后类型Foreach之下行为: 可以获得第一个或当前成员 可以移动到下一个成员 可以集合没有下一个成员时退出循环...循环中in时,就调用这个方法获得下一个person对象 public bool MoveNext() { _position++;...从编译后代码我们发现,只要我们通过foreach迭代一个IEnumerable,我们就会跑到GetVectors方法,而每次运行GetVectors方法,yield都只会返回全新三个值为(1,1)...迭代过程改变集合状态 foreach迭代时不能直接更改集合成员值,但如果集合成员是类或者结构,则可以更改其属性或字段值。不能在为集合删除或者增加成员,这会出现运行时异常。...缺点 IEnumerable功能有限,不能插入和删除

62920

LINQ查询操作符 LINQ学习第二篇

, Products>,其Key属性即为类别ID,遍历它可以读取到每一个产品对象。 六、串联操作符 串联是一个将两个集合联接在一起过程。LINQ,这个过程通过Concat操作符来实现。...名称以“As”开头转换方法可更改源集合静态类型但不枚举(延迟加载)此源集合。名称以“To”开头方法可枚举(即时加载)源集合并将放入相应集合类型。 1....只有枚举过程才将对象逐个强制转换为T类型。...ToArray ToArray 操作符可以IEnumerable 类型任何派生对象上调用,返回值为T类型数组。 5....ToList ToList操作符可以IEnumerable 类型任何派生对象上调用,返回值为List类型对象。 7.

3.1K50

C Sharp(十三)

foreach 语句就是用来配合可枚举类型一起使用,他会执行下列行为: 调用 GetEnumerator 方法获取对象枚举器 从枚举器请求每一作为迭代变量(iteration variable)...: Current: 返回当前位置属性,只读 MoveNext: 把枚举器位置前进到集合下一方法,返回布尔值,位置有效返回 true,无效(到达尾部)返回 false。...枚举器原始位置第一之前,因此使用 Current 之前必须先调用 MoveNext Reset: 位置重置为原始状态 下面代码与直接使用 foreach 产生结果是一样: using System.Collections...,实际工作,我们基本都使用泛型版本 IEnumerator 和 IEnumerable 。...类型,而是实际类型对象 迭代器 C# 2.0 之后,提供了更简单创建枚举器和可枚举类型方式。

56320

C#语言各种集合介绍

大家好,又见面了,我是全栈君 集合,表示可以通过遍历每个元素来访问一组对象(特别是可使用foreach循环访问) 一个集合包括多个元素,即有一个集合对象和N个元素对象 因为任何集合类都实现了IEnumerable...、IEnumerable 只要集合未被修改,ArrayList 就可安全地同时支持多个读取器 随着向 ArrayList 添加元素,容量通过重新分配按需自动增加(2倍增加) 如果需要建立一个对象数组,...3)Hashtable 实现了接口:IDictionary、ICollection、IEnumerable 可以向Hashtable自由添加和删除元素,有些像ArrayList,但没有那么大性能开销...方法,得到IEnumerator对象,来遍历堆栈各个元素 3.上面提到几种集合类,他们都是通用集合类,他们所接受元素大都是Object类型,当对象放入 了集合之后,都失去了原有的类型信息-即这些通用集合类都不是强类型...一个集合使用内存少,另一个集合元素检索速度快。MSDN文档集合方法常常有性能提示:O(1),时间与操作时间一致。

59221

迭代器模式

迭代器模式定义 提供一种统一方法遍历一个集合各个元素,而不关心集合内部实现。 迭代器模式目的 面向对象编程里,迭代器模式是一种最简单也最常见设计模式。...因为需要接口编程,所以,迭代器模式,抽象了2个接口,一个是集合接口,另一个是迭代器接口,具体角色如下: 1.抽象聚合(Aggregate)角色:定义存储、添加、删除聚合对象以及创建迭代器对象接口...迭代器方法运行到yield return语句时,会返回一个expression,并保留当前代码位置。下次调用迭代器函数时,将从该位置重新开始执行。....NET Framework迭代器模式应用 C#foreach语句其实就是迭代器模式。任何可以使用foreach进行遍历对象,它一定是实现了IEnumerable接口。...任何实现了IEnumerable接口对象集合都可以使用foreach遍历。

63230

C#3.0新增功能07 查询表达式

例如,SQL 数据库表包含行序列。 XML 文件,存在 XML 元素“序列”(尽管这些元素树结构按层次结构进行组织)。 内存中集合包含对象序列。...scoreQuery 变量可以另一个 foreach环中进行循环访问。 只要既没有修改它,也没有修改数据源,便会生成相同结果。...源序列每个元素本身是集合或包含集合时,可使用其他 from 子句。 例如,假设具有 Country 对象集合,其中每个对象都包含名为 Cities City 对象集合。...在下面的示例,select 子句对只包含原始元素字段子集匿名类型序列进行投影。 请注意,新对象使用对象初始值设定进行初始化。... LINQ ,联接操作是对元素属于不同类型对象序列执行。 联接了两个序列之后,必须使用 select 或 group 语句指定要存储输出序列元素。

2.1K10

.NET面试题系列 - IEnumerable派生类

Stack 容量可以根据实际使用自动扩展(翻倍扩展),并且可以通过 TrimExcess方法来减少容量。 堆栈最基本两种操作就是向堆栈内添加数据以及从堆栈删除数据。...Pop 操作会返回栈顶数据,但是此操作也会把此数据从堆栈移除。如果只是希望察看栈顶数据而不是真的要移除它, C#语言中有一种名为 Peek(取数)操作可以实现。...队列另外一个主要操作就是查看起始数据。就像在 Stack 类对应操作一样,Peek 方法用来查看起始数据。这种方法仅仅返回数据,而不会真的把数据从队列移除。...同样,从链表删除一个节点渐进时间也是线性O(n)。因为删除之前我们仍然需要从 head 开始遍历以找到需要被删除节点。...Yield本质上是一个状态机,它每次都返回全新对象C#中使用foreach将会隐式调用MoveNext方法。可以通过查看IL得知foreach运作全过程。

1.7K20

深入聊一聊配置内部处理机制

,我们webHost.CreateDefaultBuilder(args)方法之后再次调用ConfigureAppConfiguration方法添加了一些自定义数据源,这个方法也是没有执行,同样被添加到了这个集合...,然后通过foreach循环逐一执行被添加到集合_configureAppConfigurationBuilderDelegatesconfigureAppConfiguration方法,那么执行时候...这也说明了第一节例子Theme.json设置了Theme对象值后,原本appsettings.json设置Theme值被覆盖原因。...B.由于对Key值相同多个配置只会读取后加载数据源配置,所以不会出现相同路径同名节点。例如第一节例子多种数据源配置了“Theme”值,在这里只会体现最后加载配置。...即使A数据更新了,它依然处于“被覆盖”位置,应用读取相应配置依然是读取B配置

76440

C#3.0新增功能06 对象集合初始值设定

使用 C# 可以单条语句中实例化对象集合并执行成员分配。 对象初始值设定 使用对象初始值设定,你可以创建对象时向对象任何可访问字段或属性分配值,而无需调用后跟赋值语句行构造函数。...尽管对象初始值设定可用于任何上下文中,但它们 LINQ 查询表达式特别有用。...select new {p.ProductName, Price = p.UnitPrice}; 集合初始值设定 初始化实现 IEnumerable 集合类型和初始化使用适当签名作为实例方法或扩展方法...请注意,各个对象初始值设定分别括大括号且用逗号隔开。...且包含具有多个参数 Add 方法一个对象,它使用在列表每项具有多个元素集合初始值设定,这些元素对应于 Add 方法签名。

86110

【深入浅出C#】章节 9: C#高级主题:LINQ查询和表达式

其中,LINQ查询和表达式是C#高级主题中关键内容,具有以下重要性和优势: 数据处理和操作: 现代软件,数据处理和操作是至关重要。...LINQ to Objects:这是针对.NET对象集合标准LINQ提供程序,适用于各种集合类型。...: 从文本文件读取数据:使用File类读取文本文件数据。...从CSV文件读取数据:使用开源库(如CsvHelper)将CSV文件数据转化为对象。 从数据库读取数据:使用ADO.NET或ORM工具获取数据库数据。...匿名类型属性名是从查询结果属性名推断出来。然后我们foreach环中遍历查询结果并输出。 注意以下关键点: 匿名类型类型名是由编译器生成,并且在编译时是不可见

1.2K61

通过实例模拟ASP.NET MVCModel绑定机制:集合+字典

] 一、集合 这里集合指的是除数组和字典之外所有实现IEnumerable接口类型。...针对集合Model绑定实现在方法BindCollectionModel,我们按照数组绑定方式得针对目标集合对象所有元素对象,并将其添加到一个List对象,然后调用ReplaceHelper...Action方法参数类型替换成IEnumerable,该集合每个Contact信息该方法中被呈现出来。...Model绑定过程基于字典类型数据映射很好理解,首先,字典是一个KeyValuePair对象集合,所以字典元素这一级可以采用基于索引匹配机制;其次,KeyValuePair...得到字典元素Key和Value之后,我们创建一个KeyValuePair对象并添加预先创建列表

1.8K70

C# yeild

在编程语言中,迭代器是一种可以遍历容器(如列表或数组)元素对象C#,我们可以使用yield关键字创建自定义迭代器。...< 10; i++) { yield return i; } } 在上述代码,GetNumbers函数返回一个IEnumerable,这有助于我们foreach...循环中遍历结果: foreach(var number in GetNumbers()) { Console.WriteLine(number); } 其他使用方式 除了先前提到基础用法,yield...内存优化:因为使用了延迟执行特性,所以yield关键字处理大数据集合时非常有用,它不需要一次性加载所有数据到内存,只需按需加载。...注意事项 尽管yield是一个强大工具,但在使用它时也应注意以下几点: yield return语句之前不能有try-catch块,不过可以在其内部或之后使用。

12810

【5min+】你怎么穿着品如衣服?IEnumerable AND IEnumerator

,回到今天主题:IEnumerable和IEnumerator。目前我们知道它俩是不一样东西了,至少从单词层面(ง •_•)ง。那么 DotNET ,它们扮演着怎么样角色呢?...先来看看它们样子: ? ? IEnumerable说:我提供了公开枚举器,并且该枚举器支持非泛型集合上进行简单迭代功能。 IEnumerator说:我提供了支持对非泛型集合进行简单迭代功能。...其实看接口样貌我们就大概能够理解其中奥秘了,IEnumerable 提供了可以迭代能力,而这种能力是通过内部可迭代对象来实现了,这个对象就是IEnumerator。...所以我们来想一下我们.NET中经常用到可迭代对象有哪些呢? 是的,你可能第一个就会想到List。...那么这种具有了可迭代能力对象有什么好处呢? foreach,没错,它可以享受foreach语法糖啦。

36330

C# 常用接口学习 IEnumerable

我们先去看看公开.Net4.0源程序IEnumerableIEnumerable、IEnumerator和IEnumerator这四个接口是如何声明: 需加微信交流群,请加小编微信号...2、继承接口IEnumerable: 当我们类后面加上:IEnumerable后,Visual Studio IDE会冒出来一个小黄灯泡,点进去有提示自动填充接口约定,我们选第一实现接口(Visaul...迭代器工作原理是:先调用MoveNext()方法,然后读取Current得到元素,直到MoveNext返回false。 我们需要3个字段分别放置 元素位置、元素、元素集。...(好像有装箱行为) 第三,MoveNext方法内累加索引,并从元素集中读取元素。然后让索引值超出元素集返回个false值。 最后,Reset方法内让索引值为-1,不过好像直接抛出错误也成。...二、接口IEnumerable实现 如果我们想写一个通用foreach类,用到泛型: class MyCollection { public List<

74930
领券