创建可变大小的数组

时间:2013-04-16 23:16:32

标签: c# asp.net arrays dynamic arraylist

我一直在为不同的控件创建数组,如下所示:

private TextBox[] Array_TextBoxes;
private CheckBox[] Array_CheckBoxes;
private RadioButtonList[] Array_radioButton;

Array_TextBoxes= new TextBox[4];
Array_CheckBoxes= new CheckBox[5];
Array_radioButton= new RadioButtonList[10];

有没有办法创建它们以便我不需要指定大小/长度?即是否可以使这些控制数组的大小可变?

谢谢!

3 个答案:

答案 0 :(得分:5)

如果要允许任意数量的元素,则必须为数组指定长度 使用List类,如此

List<TextBox> textBoxList=new List<TextBox>();

并将控件添加到此集合中

 textBoxList.Add(new TextBox());

答案 1 :(得分:2)

您可以将它们作为列表启动,然后转换为数组:

使用.Add

向这些内容添加内容
List<TextBox> _TextBoxes = new List<TextBox>();
List<CheckBox> _CheckBoxes =  new List<CheckBox>();
List<RadioButtonList> _RadioButton = new List<RadioButtonList>();

然后转换为数组:

TextBox[] Array_TextBoxes = List<TextBox> _TextBoxes.ToArray();
CheckBox[] Array_CheckBoxes = List<CheckBox> _CheckBoxes.ToArray();
RadioButtonList[] Array_radioButton = List<RadioButtonList> _radioButton.ToArray();

或者只是使用列表......

答案 2 :(得分:2)

正如其他人所说,

List<>是一个好主意,但确实有一些开销。如果您“使用”System.Linq,也可以执行此操作,并假设controls变量指向控件的集合:

Array_TextBoxes = controls.OfType<TextBox>().ToArray();

此外,如果您更喜欢列表而不是数组,那么您也可以这样做:

List<TextBox> textBoxes = controls.OfType<TextBox>().ToList();

最后,在你的字段和变量名中使用像“Array_”这样的前缀通常被认为是不好的风格。