C# での抽象明示的インターフェース実装 質問する

C# での抽象明示的インターフェース実装 質問する

次の C# コードがあります:

abstract class MyList : IEnumerable<T>
{
    public abstract IEnumerator<T> GetEnumerator();

    //abstract IEnumerator IEnumerable.GetEnumerator();
}

現状では、次のようになります:

'Type' はインターフェイス メンバー 'System.Collections.IEnumerable.GetEnumerator()' を実装していません。

コメントを削除すると次のようになります:

このアイテムでは修飾子「abstract」は無効です

明示的な実装を抽象化するにはどうすればいいですか

ベストアンサー1

興味深いですね。できるかどうかはわかりません。しかし、これが実際のコードである場合、非ジェネリックをGetEnumerator()何らかの方法で実装したいと思ったことはありませんか?他のジェネリックを呼び出すよりも?

私ならこうします:

abstract class MyList<T> : IEnumerable<T>
{
    public abstract IEnumerator<T> GetEnumerator();

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

これにより、すべての派生クラスで同じ実装が使用されることは間違いないので、すべての派生クラスで実装しなければならないという面倒な作業から解放されます。

おすすめ記事