如何在引用类的item
末尾的Windows窗体上的TextBox和Button中添加新的ArrayList
?
private product[] value = new product[4];
value[1] = new product("One",5)
value[2] = new product("Two",3)
value[3] = new product("Three",8)
textbox1
,textbox2
,textbox3
当我点击Add
时,新产品会添加到数组中:
value[1] = new product("One",5)
value[2] = new product("Two",3)
value[3] = new product("Three",8)
value[4] = new product("Four",2)
这样做的代码是什么?
答案 0 :(得分:28)
数组是固定大小的,这意味着您无法添加比创建时分配的数字更多的元素,如果您需要自动调整大小集合,则可以使用List<T>
或ArrayList
示例:
// using collection initializers to add two products at creation time
List<Product> products = new List<Product>{new Product("One",5), new Product("Two",3) };
// then add more elements as needed
products.Add(new Product("Three",8));
答案 1 :(得分:16)
使用List作为其他人提到的。 如果您在阵列上设置,请使用
Array.Resize<Product>(ref product, your new size);
如果您只是要添加几个产品(在阵列的整个生命周期内),只需执行类似
的操作Array.Resize<Product>(ref product, product.Length + 1);
如果你要添加很多产品,你可能想要做类似于List的事情 - 就像这样:
Array.Resize<Product>(ref product, product.Length * 2);
答案 2 :(得分:3)
我认为您需要一个List<product>
集合,查看您的代码。然后只需在其上调用Add()
方法
答案 3 :(得分:2)
您无法向数组添加项目,您必须创建一个更大的新数组并将项目复制到该数组。有一种方法,有点误导性地命名为Resize
,因为它实际上没有调整数组的大小:
Array.Resize<product>(ref value, 5);
如果要将项目添加到集合中,则应改为使用List:
private List<product> value = new List<product>();
value.Add(new product("One",5));
value.Add(new product("Two",3));
value.Add(new product("Three",8));
value.Add(new product("Four",2));
编辑:
如果要调整阵列大小,可能需要增加大小而不是将其调整为特定值:
int index = value.Length;
Array.Resize<product>(ref value, index + 1);
value[index] = ...
答案 4 :(得分:1)
数组是零索引的,因此初始化为4的数组只能访问索引3 ...
如果你想让数组增长,那么你必须至少将数组初始化为你想要增长的数量,否则你必须创建一个新的更大的数组。大小并复制旧阵列;效率不高。
在这种情况下,你最好使用像列表一样的集合,而不是数组,这样大小就可以动态增加。
答案 5 :(得分:0)
答案 6 :(得分:0)
Array.Resize不是有效的方法。它使用新的大小创建一个新的数组,然后将旧的数组值复制到新的数组,然后用新的数组替换旧的数组。 如您所见,这不是添加项目的一种非常有效的方法。
除非要求您不能控制使用列表而不是数组,否则必须从一开始就创建具有最大预期尺寸的数组。
有关更多说明,请考虑以下示例: 您创建了一个数组,该数组可以容纳数百万个项目并用对象填充它。 您想将百万和一个对象添加到数组中。 您使用Array.Resize方法将数组大小更改为1000001。 当该方法尝试创建一个包含1000001个项目的新数组并将这些项目从旧数组复制到新数组时,您可能会遇到内存不足的错误,因为您尝试在内存中将两个百万个数组(容纳200万个对象)存储在同时您需要的所有项目都是一百万+1。 尽管要考虑在创建,复制和替换上浪费的时间和资源。