我在使用中,我使用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;
}
它工作得很好。
我不明白爲什麼第一種方法永遠不會運行,你能幫我理解這裏發生的事情嗎?
你怎麼稱呼這個方法? – gammelgul 2010-04-16 11:56:20
調用像這樣的構造函數:'Prop = SomeMethod(param);' – DaveParsons 2010-04-16 11:57:33