C#中的通用foreach循环
给定以下代码,编译器告诉我“使用未分配的局部变量’x’。” 有什么想法吗?
public delegate Y Function(X x); public class Map { private Function F; public Map(Function f) { F = f; } public Collection Over(Collection xs){ List ys = new List(); foreach (X x in xs) { X x2 = x;//ys.Add(F(x)); } return ys; } }
在解决了明显的错误后,它对我来说很好。
public delegate Y Function(X x); public class Map { private Function F; public Map(Function f) { F = f; } public ICollection Over(ICollection xs){ List ys = new List (); foreach (X x in xs) { X x2 = x;//ys.Add(F(x)); } return ys; } }
语言规范将foreach
语句定义为while
循环的等价物,其中循环变量被赋值给枚举器对象的Current
属性。 这绝对满足了该代码片段的任何符合C#编译器的明确赋值规则。 您使用的是不合格的编译器,或者错误来自其他地方。
这个: public Map(Function f)
应该:
public Map(Function f)
还有这个:
public Collection Over(Collection xs)
应该:
public ICollection Over(ICollection xs)
要么:
public List Over(Collection xs)