一部の 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;
}
}
}
ステップ実行すると、このコードに関するすべてが適切に機能しているように見えます。「オブジェクト」コレクションは期待どおりに設定されています。「サブ」は収集されたものとしてフェッチされ、入力された Title プロパティを含む、期待されるプロパティの完全なセットを持ちます。実行中にエラーはスローされません。
しかし...各オブジェクトに存在する SubObject.Title プロパティ (標準の get; set; コードのみ) は頑固に空のままです。
私は途方に暮れています。何が起こっているのか説明してくれる人はいますか?
編集: for ループと ElementAt を使用しないことを提案した人のために、foreach ループから始めましたが、毎回新しいサブオブジェクトをフェッチしていたため、それが問題の原因である可能性があると考えました。あなたの助けのおかげで今修正され、ForEach が復元されました。
乾杯、マット