【发布时间】:2011-02-08 19:22:33
【问题描述】:
我在使用 yield return 的方法时遇到了一点问题,这不起作用...
public IEnumerable<MyClass> SomeMethod(int aParam)
{
foreach(DataRow row in GetClassesFromDB(aParam).Rows)
{
yield return new MyClass((int)row["Id"], (string)row["SomeString"]);
}
}
上面的代码永远不会运行,当调用这个方法时它只是跳过它。
但是,如果我更改为...
public IEnumerable<MyClass> SomeMethod(int aParam)
{
IList<MyClass> classes = new List<MyClass>();
foreach(DataRow row in GetClassesFromDB(aParam).Rows)
{
classes.Add(new MyClass((int)rows["Id"], (string)row["SomeString"]);
}
return classes;
}
效果很好。
我不明白为什么第一种方法永远不会运行,你能帮我理解这里发生了什么吗?
【问题讨论】:
-
像这样调用构造函数:
Prop = SomeMethod(param);
标签: c#-2.0 yield-return