C#中的通用foreach循环

mco*_*eth 4 c# generics foreach

给定以下代码,编译器告诉我"使用未分配的局部变量'x'." 有什么想法吗?

public delegate Y Function<X,Y>(X x);

public class Map<X,Y>
{
    private Function<X,Y> F;

    public Map(Function f)
    {
        F = f;
    }

    public Collection<Y> Over(Collection<X> xs){
        List<Y> ys = new List<Y>();
        foreach (X x in xs)
        {
            X x2 = x;//ys.Add(F(x));
        }
        return ys;
    }
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ero 7

在解决了明显的错误后,它对我来说很好.

public delegate Y Function<X,Y>(X x);

public class Map<X,Y>
{
    private Function<X,Y> F;

    public Map(Function<X,Y> f)
    {
        F = f;
    }

    public ICollection<Y> Over(ICollection<X> xs){
        List<Y> ys = new List<Y>();
        foreach (X x in xs)
        {
            X x2 = x;//ys.Add(F(x));
        }
        return ys;
    }
}
Run Code Online (Sandbox Code Playgroud)