IEnumerable
是 C# 中的一个接口,表示一个支持简单迭代的非泛型集合。它定义了一个 GetEnumerator
方法,该方法返回一个 IEnumerator
对象,用于遍历集合中的元素。
IEnumerable
接口提供了一种简单的方式来遍历集合中的元素,无需关心集合的具体实现细节。IEnumerable
进行迭代时,只有在实际访问元素时才会执行相应的操作,这有助于提高性能,特别是在处理大型数据集时。IEnumerable
接口,可以轻松地将自定义集合类集成到现有的代码中。IEnumerable
是一个非泛型接口,适用于任何类型的集合。对于泛型集合,可以使用 IEnumerable<T>
接口,其中 T
表示集合中元素的类型。
IEnumerable
接口广泛应用于各种需要遍历集合的场景,例如:
以下是一个简单的示例,展示如何对两个连续值进行迭代:
using System;
using System.Collections;
class Program
{
static void Main()
{
// 创建一个包含两个连续值的集合
ArrayList list = new ArrayList();
list.Add(1);
list.Add(2);
// 使用 IEnumerable 进行迭代
foreach (int value in list)
{
Console.WriteLine(value);
}
}
}
原因:在迭代过程中修改集合可能会导致 InvalidOperationException
异常,因为迭代器在内部维护了一个指向当前元素的指针,修改集合可能会破坏这个指针的正确性。
解决方法:
ToList
或 ToArray
方法:在迭代之前将集合转换为列表或数组,这样可以在不影响原始集合的情况下进行迭代。foreach (int value in list.ToList())
{
Console.WriteLine(value);
}
for
循环:通过索引访问元素,而不是使用 foreach
循环。for (int i = 0; i < list.Count; i++)
{
int value = (int)list[i];
Console.WriteLine(value);
// 在这里可以安全地修改集合
}
CopyTo
方法:将集合复制到一个新的数组中,然后对新数组进行迭代。int[] array = new int[list.Count];
list.CopyTo(array);
foreach (int value in array)
{
Console.WriteLine(value);
}
希望这些信息对你有所帮助!
领取专属 10元无门槛券
手把手带您无忧上云