IEnumerable <t>和IEnumerator - 请澄清一些</t>

时间:2014-10-28 12:06:58

标签: ienumerable ienumerator

下午好,

我正在阅读Apress发布的Pro ASP.net MVC 4书,而我正在讨论扩展方法。

我正在努力理解一段代码如下:

 public class ShoppingCart : IEnumerable<Product>
{
    public List<Product> Products { get; set; }

    public IEnumerator<Product> GetEnumerator()
    {
        return Products.GetEnumerator();
    }

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

据我所知,ShoppingCart类继承了IEnumerable产品。 我知道我们已经创建了一个返回Product的Enumerator的方法。 我不明白最后的方法,IEnumerator IEnumerable.GetEnumerator()。有人可以用'新手'来启发我吗?

由于

1 个答案:

答案 0 :(得分:0)

您必须实施的最后一种方法

  IEnumerator IEnumerable.GetEnumerator()
当.Net不支持泛型(和IEnumerator<T>)时,

是古代.Net版本的遗产。 从那以后,出于兼容性原因,每个IEnumerable<T>不应该只实现

  IEnumerator<T> GetEnumerator()

但旧式非通用

  IEnumerator GetEnumerator()

也是。你可以从声明中看到它

 public interface IEnumerable<out T> : IEnumerable {...}

http://msdn.microsoft.com/en-us/library/9eekhta0(v=vs.110).aspx