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

我可以有一个方法返回IEnumerator <T>并在foreach循环中使用它吗?

当然可以。在C#中,您可以使用IEnumerator<T>接口来实现自定义的迭代器,并在foreach循环中使用它。以下是一个简单的示例:

代码语言:csharp
复制
using System;
using System.Collections;
using System.Collections.Generic;

public class CustomEnumerator<T> : IEnumerator<T>
{
    private readonly List<T> _items;
    private int _currentIndex;

    public CustomEnumerator(List<T> items)
    {
        _items = items;
        _currentIndex = -1;
    }

    public bool MoveNext()
    {
        _currentIndex++;
        return _currentIndex < _items.Count;
    }

    public void Reset()
    {
        _currentIndex = -1;
    }

    public T Current
    {
        get
        {
            if (_currentIndex < 0 || _currentIndex >= _items.Count)
            {
                throw new InvalidOperationException("Enumerator is in an invalid state.");
            }

            return _items[_currentIndex];
        }
    }

    object IEnumerator.Current
    {
        get
        {
            return Current;
        }
    }

    public void Dispose()
    {
        // Clean up any resources if necessary.
    }
}

public class Program
{
    public static void Main()
    {
        var items = new List<int> { 1, 2, 3, 4, 5 };
        var enumerator = new CustomEnumerator<int>(items);

        foreach (var item in enumerator)
        {
            Console.WriteLine(item);
        }
    }
}

在这个示例中,我们创建了一个名为CustomEnumerator<T>的类,它实现了IEnumerator<T>接口。然后,在Main方法中,我们创建了一个List<int>,并将其传递给CustomEnumerator<T>的实例。最后,我们使用foreach循环遍历整数列表。

这个示例展示了如何创建一个自定义的迭代器,并在foreach循环中使用它。您可以根据您的需求修改这个示例,以适应您的特定场景。

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

相关·内容

没有搜到相关的合辑

领券