在C#中,IEnumerable<>是一个泛型接口,用于表示一个可枚举的集合。它定义了一个用于遍历集合元素的枚举器(enumerator)。通过实现IEnumerable<>接口,我们可以使用foreach语句或LINQ查询等方式来迭代访问集合中的元素。
IEnumerable<>接口定义了一个名为GetEnumerator的方法,该方法返回一个实现了IEnumerator<>接口的枚举器。IEnumerator<>接口提供了对集合中元素的访问和操作,它包含了MoveNext、Current和Reset等方法,用于在集合上进行迭代。
以下是一个使用IEnumerable<>接口的简单示例,展示了如何自定义一个可枚举的集合:
public class MyCollection<T> : IEnumerable<T>
{
// 声明一个私有变量 items,用于存储集合元素
private List<T> items = new List<T>();
// 添加元素到集合的方法
public void Add(T item)
{
items.Add(item);
}
// 实现 IEnumerable<T> 接口的 GetEnumerator 方法
public IEnumerator<T> GetEnumerator()
{
return items.GetEnumerator();
}
// 实现 IEnumerable 接口的 GetEnumerator 方法
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
public class Program
{
public static void Main(string[] args)
{
// 创建一个 MyCollection<int> 类型的集合实例
MyCollection<int> collection = new MyCollection<int>();
// 向集合中添加元素
collection.Add(1);
collection.Add(2);
collection.Add(3);
// 使用 foreach 循环遍历集合中的元素,并输出到控制台
foreach (int item in collection)
{
Console.WriteLine(item);
}
}
}
在这段代码中:
-
MyCollection<T>
类是一个泛型类,用于表示一个集合。它实现了IEnumerable<T>
接口,表示该类的实例可以被枚举遍历。 -
items
是一个私有变量,用于存储集合中的元素。它的类型是List<T>
,即一个泛型列表,用于动态地存储元素。 -
Add
方法用于向集合中添加元素。它接受一个泛型类型的参数item
,并将其添加到items
列表中。 -
GetEnumerator
方法是IEnumerable<T>
接口的实现方法。它返回一个IEnumerator<T>
类型的枚举器,用于在集合上进行迭代。 -
IEnumerable.GetEnumerator
方法是IEnumerable
接口的实现方法。它返回一个非泛型的枚举器,通过调用上面的GetEnumerator
方法来实现。 -
在
Program
类的Main
方法中,我们创建了一个MyCollection<int>
类型的集合实例collection
。 -
使用
collection.Add
方法将整数 1、2 和 3 添加到集合中。 -
使用
foreach
循环遍历集合中的元素,并将每个元素输出到控制台。
在上面的示例中,我们首先定义了一个名为MyCollection的类,实现了IEnumerable接口。这个类内部使用了List来存储元素,并提供了一个Add方法用于向集合中添加元素。
通过实现GetEnumerator方法来返回一个枚举器,我们使得MyCollection类可以被遍历。在Main方法中,我们创建了一个MyCollection实例,并使用foreach语句遍历集合中的元素并输出到控制台。
通过实现IEnumerable<>接口,我们可以方便地对自定义集合进行迭代操作,使得代码更加简洁、可读性更高。**