這讓我很困惑。我使用PetaPoco從數據庫中檢索一些值,然後遍歷它們並檢索值以分配給每個對象的屬性之一。修改foreach循環內的對象的屬性不起作用?
public IEnumerable<RetreaveIndex> FillResults(IEnumerable<RetreaveIndex> results)
{
//add the associated users
foreach (RetreaveIndex index in results)
{
index.AssociatedUsers = _registeredUserDao.GetUsersByIndex(index).ToList();
}
return results;
}
當我在foreach循環期間設置斷點時,正在設置AssociatedUsers屬性。
但是,然後在循環結束的斷點,它沒有保存它?
我很困惑,不應該是一個引用到正在修改的內存中的地方嗎?畢竟它是一個對象。我在這裏錯過了什麼?
其對象(見原題的底部)。我查看了PetaPoco源代碼,看起來我調用的方法是Query(),它使用Yield Return來返回IENumerable。當我將我的電話改爲獲取()時,它返回一個它工作的List。也許我需要更多地閱讀收益率回報,我認爲這只是構建某種列表的語法糖,猜我錯了? –
RodH257
2011-05-21 13:11:05
yield return導致方法體被分割成一個巨大的case語句,該語句成爲新的IEnumerator類的MoveNext方法的主體。 – 2011-05-21 22:19:29
我一直在IEnumerables多年的工作,令人驚訝的是,這是我第一次打這個......(這讓我完全困惑)乾杯! – FBryant87 2016-10-12 15:57:03