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

您要添加对同一数组的引用三次,因此更改数组的内容确实可以让您看到该更改,但是您可以看到它。重要的是您要了解列表不包含数组本身 - 它包含引用。有关更多信息,请参阅我关于引用类型和值类型的文章。

您可能每次只想要一个新数组:

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具有属性Id、、、TitleMain(无论是什么意思)Amount的类DelId?然后你可以创建一个List<Item>更容易使用的。

于 2012-10-24T07:17:46.487 回答