在一些C#代碼中看到了一些奇怪的行爲,我不知所措。可能是我錯過了一個重要的理解,所以希望有人可以爲我開燈。C#未能在IEnumerable中設置屬性
得到的代碼塊看起來像這樣:
IEnumberable<myObject> objects = GetObjectsFromApiCall();
for (int i = 0; i < objects.Count(); i++)
{
if (String.IsNullOrEmpty(objects.ElementAt(i).SubObject.Title))
{
SubObject sub = GetSubObjectFromDatabase((long)objects.ElementAt(i).SubObject.Id);
if (sub != null)
{
objects.ElementAt(i).SubObject.Title = sub.Title;
}
}
}
當你通過它一步,這段代碼的一切似乎正常工作。 「對象」集合按預期填充。 「sub」被提取爲已收集並具有一整套預期屬性,包括已填充的Title屬性。在執行過程中不會引發錯誤。
...但是... SubObject.Title屬性(它只是有標準的get;設定;代碼)存在於每個對象固執地保持爲空。
我不知所措。任何人都可以解釋發生了什麼?
編輯:對於那些建議我不應該使用for循環和ElementAt,我開始使用foreach循環,但認爲它可能是問題的來源,因爲它每次都獲取新的SubObject。現在修復,感謝您的幫助,並恢復了ForEach。
乾杯, 馬特
你去了哪裏:[更新IEnumerable中的item屬性,但屬性不保留設置?](http://stackoverflow.com/a/9104212/93732) – 2013-03-08 12:58:24
此代碼有可能會非常慢甚至不好笑。 – ChaosPandion 2013-03-08 12:58:46
你可以複製/粘貼你的* actual *代碼,而不是* *看起來像* actual *代碼的東西嗎? – ken2k 2013-03-08 13:00:00