我想知道是否有任何方法可以将以下代码编写得更短......
public PictureBox pb1;
public PictureBox pb2;
public PictureBox pb3;
.....
public PictureBox pb50;
然后,有没有办法将所有这些变量添加到列表中,而无需再次执行相同的丑陋代码。
listPB.add(pb1); listPB.add(pb2);...... ListPB.add(pb50);
我使用的方法非常愚蠢,我希望还有其他方法可以做到。谢谢你的帮助!
答案 0 :(得分:8)
你可以像这样制作一个特别的集合:
PictureBox[] pictureBoxen = {pb1, pb2, pb3, ..., pb50};
然后您可以使用列表中的AddRange
添加
listPB.AddRange(pictureBoxen);
或者,如果在该地点创建了listPB
,并且只包含这些变量,则可以执行以下操作:
List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50};
请注意,这种语法仅在2008年的C#3中引入,因此可以安全地假设您正在使用该语法或更高版本。
对于C#2及以下版本,循环是我能想到的最好的。
答案 1 :(得分:2)
使用循环
for(int i = 0; i < 10; i++)
{
PictureBox p = new PictureBox();
listPb.Add(p);
}
答案 2 :(得分:2)
使用此:
public PictureBox pb1,pb2,pb3,pb4....,pb50;
然后
List<PictureBox> listPB = new List<PictureBox>{pb1, pb2, ..., pb50};
答案 3 :(得分:2)
你可以这样做:
List<PictureBox> listPicture = new List<PictureBox>() { pb1, pb2, pb3, pb4, pb5, etc... };
答案 4 :(得分:1)
List<PictureBox> list = new List<PictureBox>();
for(int i = 0; i < 50; i++)
{
list.add(new PictureBox{
//set properties here..
});
}
答案 5 :(得分:1)
如果列表是你的初始化,我会在开头使用数组:
PictureBox[] pictures = new PictureBox[50];
for (int i = 0; i < pictures.Length; i++)
{
pictures[i] = new PictureBox();
// Do something else
}
如果通过其他方式生成50个实例,我建议使用带有Regex的Notepad ++ Find and Replace
。