以下のコードは単純なことをしています。API の生データを操作し、それをビュー モデルのプロパティにバインドします。
Web サービスからデータをフェッチし、calljsonObject という名前のオブジェクトに保存します。これが生データです。次に、foreach ループを実行して生データから選択したデータを選択し、tmpList という名前のオブジェクトに保存し、最後の行で tmpList を docList という名前のビュー モデル プロパティにバインドします。
SingleBoardListRawData calljsonObject = JsonConvert.DeserializeObject<SingleBoardListRawData>(callbackjsonstring);
ObservableCollection<SinglePostViewModel> tmpList = new ObservableCollection<SinglePostViewModel>();
SinglePostViewModel tmpPost = new SinglePostViewModel();
foreach (List<object> item in calljsonObject.data)
{
tmpPost.doc_id = (long)item[0];
tmpPost.doc_title = (string)item[1];
tmpPost.doc_author = (string)item[2];
tmpPost.repliesCount = (long)item[4];
tmpPost.doc_post_date = DateTime.Parse((string)item[5]);
tmpPost.OnTop = (long)item[6];
tmpPost.CoolPost = (long)item[7];
tmpPost.doc_update_date = DateTime.Parse((string)item[9]);
tmpPost.PicInDoc = (long)item[10];
tmpPost.reply_user_name = (string)item[11];
tmpPost.doc_brief = (string)item[13];
tmpList.Add(tmpPost);
}
this.docList = tmpList;
しかし、結果は同じデータでいっぱいの tmpList であり、これは最後の foreach 操作の結果です。しかし、私は tmpPost 値を再割り当てしたと思っていました。すべての Add メソッドが前のものを実行するようです。
foreach ループを実行するたびに新しいオブジェクトを作成したくありません。コストがかかると思います。
私の質問は: 1. なぜですか? 2.どうやって解決するの?