1

これらのコードを参照してください:

    List<string[]> items_1 = new List<string[]>();
    string[] item = new string[] { "item_id_for_sell", "item_title", "item_id_main", "item_amount", "item_del_id" };
    items_1.Add(item);
    item[0] = "1";
    item[1] = "1";
    item[2] = "1";
    item[3] = "1";
    item[4] = "1";
    items_1.Add(item);
    item[0] = "2";
    item[1] = "2";
    item[2] = "2";
    item[3] = "2";
    item[4] = "2";
    items_1.Add(item);

私はこのリストについてとても混乱しています。
そのリスト内のすべての文字列配列が最後に「2」の値を持つのはなぜですか?
項目 (文字列配列) を更新することで、そのリスト自体が更新されないようにするにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

6

同じ配列への参照を 3 回追加しているため、配列の内容を変更すると、実際にその変更を確認できます。リストには配列自体が含まれているのではなく、参照が含まれていることを理解することが重要です。詳細については、参照型と値型に関する私の記事を参照してください。

おそらく、毎回新しい配列が必要になるでしょう:

List<string[]> items_1 = new List<string[]>();
string[] item = { "item_id_for_sell", "item_title",
                  "item_id_main", "item_amount", "item_del_id" };
items_1.Add(item);
item = new string[] { "1", "1", "1", "1", "1" };
items_1.Add(item);
item = new string[] { "2", "2", "2", "2", "2" };
items_1.Add(item);

ただし、ここで文字列の配列が本当に最適な形式であるかどうかを再考することを強くお勧めします。プロパティ、、、および(それが何を意味するにせよ) を持つItemクラスを作成してみませんか? 次に、作業がはるかに簡単になる を作成できます。IdTitleMainAmountDelIdList<Item>

于 2012-10-24T07:17:46.487 に答える