【问题标题】:Creating variable sized arrays创建可变大小的数组
【发布时间】:2013-04-09 13:15:59
【问题描述】:
我一直在为不同的控件创建数组,如下所示:
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];
有什么方法可以创建它们以便我不需要指定大小/长度? IE。是否有可能使这些控制数组可变大小?
谢谢!
【问题讨论】:
标签:
c#
asp.net
arrays
dynamic
arraylist
【解决方案1】:
如果你想允许任意数量的元素,数组必须指定一个长度
使用List 类,像这样
List<TextBox> textBoxList=new List<TextBox>();
并将控件添加到此集合中
textBoxList.Add(new TextBox());
【解决方案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();
或者只使用列表...
【解决方案3】:
List<>,正如其他人所建议的那样,是一个好主意,但它确实有一些开销。如果您“使用” System.Linq,也可以这样做,并假设 controls 变量指向控件的集合:
Array_TextBoxes = controls.OfType<TextBox>().ToArray();
此外,如果您更喜欢使用列表而不是数组,您也可以这样做:
List<TextBox> textBoxes = controls.OfType<TextBox>().ToList();
最后,在字段和变量名中使用“Array_”之类的前缀通常被认为是一种糟糕的风格。