下午好,
我正在阅读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()。有人可以用'新手'来启发我吗?
由于
答案 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