我在使用一个方法时遇到了一些问题,其中我使用了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);
- user61470