c# – 如何使用GetEnumerator()实现IEnumerable?

前端之家收集整理的这篇文章主要介绍了c# – 如何使用GetEnumerator()实现IEnumerable?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > Troubles implementing IEnumerable<T>7个
我希望我的类型实现IEnumerable< string> .我试图在一个Nutshell遵循C#,但是出了问题:
public class Simulation : IEnumerable<string>
{
    private IEnumerable<string> Events()
    {
        yield return "a";
        yield return "b";
    }

    public IEnumerator<string> GetEnumerator()
    {
        return Events().GetEnumerator();
    }
}

但是我收到构建错误

Error 1 ‘EventSimulator.Simulation’ does not implement interface member ‘System.Collections.IEnumerable.GetEnumerator()’. ‘EventSimulator.Simulation.GetEnumerator()’ cannot implement ‘System.Collections.IEnumerable.GetEnumerator()’ because it does not have the matching return type of ‘System.Collections.IEnumerator’.

解决方法

你缺少IEnumerator IEnumerable.GetEnumerator():
public class Simulation : IEnumerable<string>
{
    private IEnumerable<string> Events()
    {
        yield return "a";
        yield return "b";
    }

    public IEnumerator<string> GetEnumerator()
    {
        return Events().GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

猜你在找的C#相关文章