继承IEnumerable <string>导致错误CS0738

时间:2016-03-10 09:38:04

标签: c# inheritance interface ienumerable

public class PatchInfo : IEnumerable<string>
{
    ...
    public IEnumerator<string> GetEnumerator()
    {
        LinkedList<string> list = new LinkedList<string>();
        ...
        return list;
    }
}

接口的名称是“IEnumerable”所以我想可以更正返回类型“IEnumerator”。

但它会导致编译错误

  

CS0738:...没有实现接口成员......因为它确实如此   没有匹配的返回类型'System.Collections.IEnumerator'。

出了什么问题?

1 个答案:

答案 0 :(得分:1)

IEnumarable&LT; T&GT;继承IEnumarable。所以你还需要实现IEnumerator IEnumerable.GetEnumerator()方法。

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

此外,您的代码将无法编译,因为GetEnumerator方法应返回IEnumerator而不是 IEnumarable。使用GetEnumarator方法获取IEnumerator

public class TestEnumarable : IEnumerable<string>
{
    public IEnumerator<string> GetEnumerator()
    {
       LinkedList<string> a = new LinkedList<string>();

       return a.GetEnumerator();
    }

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