在一些我无法解释的 C# 代码中看到了一些奇怪的行为。可能是我缺少重要的理解,所以希望有人可以为我打开灯。
得到一个如下所示的代码块:
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 属性。执行过程中不会抛出任何错误。
但是......每个 Object 中存在的 SubObject.Title 属性(只有标准的 get;set;代码)顽固地保持为空。
我不知所措。任何人解释发生了什么?
编辑:对于那些建议我不应该使用 for 循环和 ElementAt 的人,我从 foreach 循环开始,但认为它可能是问题的根源,因为它每次都在获取一个新的 SubObject。现在已修复,感谢您的帮助,ForEach 已恢复。
干杯,马特