C# 如何为数组添加附加值?

C# 如何为数组添加附加值?,c#,arrays,winforms,int,C#,Arrays,Winforms,Int,我目前正在创建一个程序,用户可以使用打印机,只要该用户有足够的资金 我现在面临的问题是,如果用户选择彩色打印而不是黑白打印,那么每张纸的价格就会上涨 如何为已存在的数组添加值 这是我的密码 printers[0] = new Printer("printer1", 0.10M); printers[1] = new Printer("printer2", 0.08M); printers[2] = new Printer("printer3", 0

我目前正在创建一个程序,用户可以使用打印机,只要该用户有足够的资金

我现在面临的问题是,如果用户选择彩色打印而不是黑白打印,那么每张纸的价格就会上涨

如何为已存在的数组添加值

这是我的密码

printers[0] = new Printer("printer1", 0.10M);
            printers[1] = new Printer("printer2", 0.08M);
            printers[2] = new Printer("printer3", 0.05M);
            printers[3] = new Printer("printer4", 0.15);
            printers[4] = new Printer("printer5", 0.09M);

            foreach (Printer r in mPrinters)
            {
                if (printer != null)
                    printerCombo.Items.Add(r.getName());
            }

数组是固定长度的。您需要将值复制到新数组中,或使用列表、列表或数组列表。

数组的长度是固定的。您需要将值复制到新数组中,或使用列表、列表或数组列表。

数组具有固定大小-创建大小为10的数组后,您不能再添加一个元素(使大小为11)

使用
列表


使用
List
可以更改其大小,添加和删除元素。

数组具有固定大小-创建大小为10的数组后,不能再添加一个元素(使大小为11)

使用
列表

使用
列表
可以更改其大小、添加和删除元素。

从技术上讲,您可以:

 Array.Resize(ref printers, printers.Length + 1);

 printers[printers.Length - 1] = new Printer("printer6", 0.25M);
但是,更好的方法是将集合类型:array更改为
List

列表打印机=新列表(){
新打印机(“打印机1”,0.10M),
新打印机(“printer2”,0.08M),
新打印机(“printer3”,0.05米),
新打印机(“打印机4”,0.15),
新打印机(“printer5”,0.09M),};
...
添加(新打印机(“printer6”,0.25M));
从技术上讲,您可以:

 Array.Resize(ref printers, printers.Length + 1);

 printers[printers.Length - 1] = new Printer("printer6", 0.25M);
但是,更好的方法是将集合类型:array更改为
List

列表打印机=新列表(){
新打印机(“打印机1”,0.10M),
新打印机(“printer2”,0.08M),
新打印机(“printer3”,0.05米),
新打印机(“打印机4”,0.15),
新打印机(“printer5”,0.09M),};
...
添加(新打印机(“printer6”,0.25M));

使用列表,而不是按设计固定大小的阵列。如果您想要一个可以添加、删除、插入的集合,请查看
System.collection.Generic
System.collection.ObjectModel
中的类,而不是使用列表。数组的设计大小是固定的。如果您想要一个可以添加、删除、插入的集合,请查看
System.collection.Generic
System.collection.ObjectModel
中的类。否,它们不是不可变的。它们只是有一个固定的长度。两件不同的事,没错。更新answer.ArrayList非常过时,我们不应该建议使用它。单子是要走的路。我更喜欢吝啬的类型集合,但它仍然是框架的一部分不,它们不是一成不变的。它们只是有一个固定的长度。两件不同的事,没错。更新answer.ArrayList非常过时,我们不应该建议使用它。单子是要走的路。我更喜欢吝啬类型的集合,但它仍然是框架的一部分。Resize创建新数组将旧数组的所有内容复制到新数组中。它不会调整原始数组的大小。@Fran:你说得很对(这就是为什么我们在调用
array.resize
时用
ref
传递数组的原因)。然而,这种引擎盖下的行为,IMHO,并没有多大关系:我们得到的数组的
长度
增加了,我们知道数组不应该改变它们的大小(所以我们不应该经常使用
数组。Resize
Resize)Resize创建一个新数组,将旧数组的所有内容复制到新数组中。它不会调整原始数组的大小。@Fran:你说得很对(这就是为什么我们在调用
array.resize
时用
ref
传递数组的原因)。然而,这种引擎盖下的行为IMHO并不重要:我们得到的数组的
长度增加了,我们知道数组不应该改变大小(因此我们不应该经常使用
array.Resize
 Array.Resize(ref printers, printers.Length + 1);

 printers[printers.Length - 1] = new Printer("printer6", 0.25M);
 List<Printer> printers = new List<Printer>() {
   new Printer("printer1", 0.10M),
   new Printer("printer2", 0.08M),
   new Printer("printer3", 0.05M),
   new Printer("printer4", 0.15),
   new Printer("printer5", 0.09M), }; 

 ...

 printers.Add(new Printer("printer6", 0.25M));