日期:2014-05-17  浏览次数:20405 次

关于Pro ASP.NET MVC 3书中的一个实例的疑问
C# code
    public class ShoppingCart:IEnumerable<Product>
    {
        public IEnumerable<Product> Products { get; set; }
        public IEnumerator<Product> GetEnumerator()
        {
            return Products.GetEnumerator();
        }
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }

请问一下第二个方法,放在我的vs2010中为什么实现不了呢?
错误提示:错误 1 “LambaExpressions.ShoppingCart”不实现接口成员“System.Collections.IEnumerable.GetEnumerator()”。“LambaExpressions.ShoppingCart.GetEnumerator()”无法实现“System.Collections.IEnumerable.GetEnumerator()”,因为它没有匹配的返回类型“System.Collections.IEnumerator”。 D:\Study\MVC\ConsoleApplication1\LambaExpressions\Program.cs 48 18 LambaExpressions


------解决方案--------------------
C# code
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Product
    { 
    
    }
    public class ShoppingCart : IEnumerable<Product>
    {
        public IEnumerable<Product> Products { get; set; }
        public IEnumerator<Product> GetEnumerator()
        {
            return Products.GetEnumerator();
        }
        IEnumerator IEnumerable.GetEnumerator()
        {
            return GetEnumerator();
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
        }
    }
}

------解决方案--------------------
这没什么问题

不过
public static IEnumerable<Product> filter(IEnumerable<Product> prodParam, Func<Product, bool> selectorParam)
{
foreach (Product prod in prodParam)
{
if (selectorParam(prod))
{
yield return prod;
}
}
}

可以简化下
public static IEnumerable<Product> filter(IEnumerable<Product> prodParam, Func<Product, bool> selectorParam)
{
return prodParam.Where(x => selectorParam(x));
}

------解决方案--------------------
你的VS 和 MVC 是什么版本哦?

我这没什么问题~

VS2010 MVC3~