C# StringArray作为列表项目->如何通过更改一个项目(预定义的字符串数组)来防止更改所有项目
请参阅以下代码:C# StringArray作为列表项目->如何通过更改一个项目(预定义的字符串数组)来防止更改所有项目,c#,list,arrays,C#,List,Arrays,请参阅以下代码: 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";
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个值?
如何通过更新项字符串数组来防止该列表自我更新
提前感谢您将三次添加对同一数组的引用,因此更改数组的内容确实可以让您看到所做的更改。重要的是,您要了解列表并不包含数组本身,它包含引用。有关更多信息,请参阅我关于的文章 您可能每次都需要一个新阵列:
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);
但是,我敦促您重新考虑字符串数组是否真的是这里最好的格式。为什么不创建一个具有属性Id、Title、Main、Amount和DelId的Item类呢?然后,您可以创建一个更易于使用的列表。您将三次添加对同一数组的引用,因此更改数组的内容确实可以让您在进行更改时看到更改。重要的是,您要了解列表并不包含数组本身,它包含引用。有关更多信息,请参阅我关于的文章 您可能每次都需要一个新阵列:
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);
但是,我敦促您重新考虑字符串数组是否真的是这里最好的格式。为什么不创建一个具有属性Id、Title、Main、Amount和DelId的Item类呢?然后,您可以创建一个更易于使用的列表