2014-10-28 47 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