在一些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