C#:访问链接列表的反向枚举器

C#:访问链接列表的反向枚举器,c#,enumerator,C#,Enumerator,我已经为LinkedList创建了一个“反向iTarator”,现在我想将其与扩展方法一起使用: public static class LinkedListExtensionMethods { public static IEnumerator GetReverseEnumerator<T>(this LinkedList<T> linkedList) { return new LinkedListReverseEnumerator<

我已经为LinkedList创建了一个“反向iTarator”,现在我想将其与扩展方法一起使用:

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);
    }
}
公共静态类LinkedListensionMethods
{
公共静态IEnumerator GetReverseEnumerator(此LinkedList LinkedList)
{
返回新的LinkedListReverseEnumerator(linkedList);
}
公共静态IEnumerator GetReverseGenericEnumerator(此LinkedList LinkedList)
{
返回新的LinkedListReverseEnumerator(linkedList);
}
}
但是如果我写:

foreach (ICommand command in _CompoundDoCollection.GetReverseEnumerator<ICommand>())
foreach(在_CompoundDoCollection.GetReverseEnumerator()中的ICommand命令)
它不起作用


我该怎么办?

foreach不是这样工作的。任何实现IEnumerable接口的操作都必须重写GetEnumerator方法。这是foreach调用的方法。如果要向后枚举,需要使自己的IEnumerable并让它的GetEnumerator返回ReverseEnumerator。您仍然可以使用扩展方法来实现这一点,只需让扩展方法将LinkedList转换为ReverseLinkedList。

foreach不是这样工作的。任何实现IEnumerable接口的操作都必须重写GetEnumerator方法。这是foreach调用的方法。如果要向后枚举,需要使自己的IEnumerable并让它的GetEnumerator返回ReverseEnumerator。您仍然可以使用扩展方法来实现这一点,只需让扩展方法将您的LinkedList转换为ReverseLinkedList。

什么叫“它不工作”?它是否会抛出错误,结果是否与您预期的不同?它不编译吗?等等,当你可以向后迭代一个普通的枚举器时,为什么使用“反向”枚举器?@Cos,你如何向后迭代一个普通的枚举器?@svick,请看我在下面发布的答案。@Cos,你的解决方案与枚举器无关,即
IEnumerator
IEnumerable
。什么是“它不工作”的意思?它是否会抛出错误,结果是否与您预期的不同?它不编译吗?等等,当你可以向后迭代一个普通的枚举器时,为什么使用“反向”枚举器?@Cos,你如何向后迭代一个普通的枚举器?@svick,请看我在下面发布的答案。@Cos,你的解决方案与枚举器无关,即
IEnumerator
IEnumerable