C#IEnumberable<>

在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 接口的 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 类型的集合实例
        MyCollection<int> collection = new MyCollection<int>();

        // 向集合中添加元素
        collection.Add(1);
        collection.Add(2);
        collection.Add(3);

        // 使用 foreach 循环遍历集合中的元素,并输出到控制台
        foreach (int item in collection)
        {
            Console.WriteLine(item);
        }
    }
}

在这段代码中:

  1. MyCollection 类是一个泛型类,用于表示一个集合。它实现了 IEnumerable 接口,表示该类的实例可以被枚举遍历。

  2. items 是一个私有变量,用于存储集合中的元素。它的类型是 List,即一个泛型列表,用于动态地存储元素。

  3. Add 方法用于向集合中添加元素。它接受一个泛型类型的参数 item,并将其添加到 items 列表中。

  4. GetEnumerator 方法是 IEnumerable 接口的实现方法。它返回一个 IEnumerator 类型的枚举器,用于在集合上进行迭代。

  5. IEnumerable.GetEnumerator 方法是 IEnumerable 接口的实现方法。它返回一个非泛型的枚举器,通过调用上面的 GetEnumerator 方法来实现。

  6. Program 类的 Main 方法中,我们创建了一个 MyCollection 类型的集合实例 collection

  7. 使用 collection.Add 方法将整数 1、2 和 3 添加到集合中。

  8. 使用 foreach 循环遍历集合中的元素,并将每个元素输出到控制台。


在上面的示例中,我们首先定义了一个名为MyCollection的类,实现了IEnumerable接口。这个类内部使用了List来存储元素,并提供了一个Add方法用于向集合中添加元素。

通过实现GetEnumerator方法来返回一个枚举器,我们使得MyCollection类可以被遍历。在Main方法中,我们创建了一个MyCollection实例,并使用foreach语句遍历集合中的元素并输出到控制台。

通过实现IEnumerable<>接口,我们可以方便地对自定义集合进行迭代操作,使得代码更加简洁、可读性更高。**

你可能感兴趣的:(学习C#的笔记,c#,windows)