Search code examples
c#.netinterfaceienumerableexplicit-interface

Explicit interface implementation related with an IEnumerable<T> implementation?


Why in this MSDN example is needed the GetEnumerator1 method?

// Must implement GetEnumerator, which returns a new StreamReaderEnumerator. 
public IEnumerator<string> GetEnumerator()
{
    return new StreamReaderEnumerator(_filePath);
}

// Must also implement IEnumerable.GetEnumerator, but implement as a private method. 
private IEnumerator GetEnumerator1()
{
    return this.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
    return GetEnumerator1();
}

Solution

  • No need, we can just use

    // Must implement GetEnumerator, which returns a new StreamReaderEnumerator. 
    
    public IEnumerator<string> GetEnumerator()
    {
        return new StreamReaderEnumerator(_filePath);
    }
    
    // Must also implement IEnumerable.GetEnumerator, but implement as a private method. 
    
    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
    

    instead.