2014-10-28 49 views
1

下午好,的IEnumerable <T>和IEnumerator的 - 一些说明,请

我目前正在读由Apress出版出版临ASP.net MVC 4本书,和Im上谈到扩展方法的部分。

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

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

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

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

据我所知,我的购物类继承IEnumerable的产品。 我知道我们已经创建了一个返回产品枚举器的方法。 我不明白最终的方法,IEnumerator IEnumerable.GetEnumerator()。有人可以用'新手'的词汇给我启发吗?

感谢

回答

0

你的最后一个方法来实现

IEnumerator IEnumerable.GetEnumerator() 

是古老的.Net版本的遗产当.NET不支持泛型(和IEnumerator<T>)。 此后,每天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

+0

大回答,谢谢梅德。 – ManxJason 2014-10-28 13:10:46