0

LinkedListの「逆反復子」を作成しました。次に、拡張メソッドで使用したいと思います。

public static class LinkedListExtensionMethods
{
    public static IEnumerator GetReverseEnumerator<T>(this LinkedList<T> linkedList)
    {
        return new LinkedListReverseEnumerator<T>(linkedList);
    }

    public static IEnumerator<T> GetReverseGenericEnumerator<T>(this LinkedList<T> linkedList)
    {
        return new LinkedListReverseEnumerator<T>(linkedList);
    }
}

しかし、私が書く場合:

foreach (ICommand command in _CompoundDoCollection.GetReverseEnumerator<ICommand>())

動作しません。

私は何をすべきか?

4

1 に答える 1

4

これは、foreachが機能する方法ではありません。IEnumerableインターフェイスを実装するものはすべて、GetEnumeratorメソッドをオーバーライドする必要があります。これはforeachによって呼び出されるメソッドです。逆方向に列挙する場合は、独自のIEnumerableを作成し、GetEnumeratorがReverseEnumeratorを返すようにする必要があります。拡張メソッドを使用してこれに固執することができます。拡張メソッドにLinkedListをReverseLinkedListに変換させるだけです。

于 2011-04-25T14:48:00.247 に答える