C# 用循环填充数组

C# 用循环填充数组,c#,C#,我想得到一个比现在更短的代码,但我不知道怎么做 我现在所做的就像下面的代码 arrPictureBox[0] = picChair0; arrPictureBox[1] = picChair1; arrPictureBox[2] = picChair2; arrPictureBox[3] = picChair3; arrPictureBox[4] = picChair4; arrPictureBox[5] = picChair5; arrPictureBox[6] = picChair6; ar

我想得到一个比现在更短的代码,但我不知道怎么做

我现在所做的就像下面的代码

arrPictureBox[0] = picChair0;
arrPictureBox[1] = picChair1;
arrPictureBox[2] = picChair2;
arrPictureBox[3] = picChair3;
arrPictureBox[4] = picChair4;
arrPictureBox[5] = picChair5;
arrPictureBox[6] = picChair6;
arrPictureBox[7] = picChair7;
arrPictureBox[8] = picChair8;
arrPictureBox[9] = picChair9;
arrPictureBox[10] = picChair10;
arrPictureBox[11] = picChair11;
(图)是一个图片盒

但我想要更少的代码,但我不知道是否可以用循环(for循环)来实现这一点

for(int i=0;i
如果
picChairN
是一个局部变量,那么就没有任何方法可以尽可能简化它。你所能做的就是

arrPictureBox = new [] { picChair0, picChair1, picChair2, picChair3,
                         picChair4, picChair5, picChair6, picChair7, 
                         picChair8, picChair9, picChair10, picChair11};

如果
picChairN
是类成员(例如,由设计器创建的字段),则可以使用反射,但考虑到已经键入了数组方法,我看不出有多大好处。

如果
picChairN
是局部变量,则无法尽可能简化它。你所能做的就是

arrPictureBox = new [] { picChair0, picChair1, picChair2, picChair3,
                         picChair4, picChair5, picChair6, picChair7, 
                         picChair8, picChair9, picChair10, picChair11};

如果
picChairN
是类成员(例如,设计器创建的字段),则可以使用反射,但考虑到您已经键入了数组方法,我看不出有什么好处。

如果所有图片框都在同一表单上,并且是表单上唯一的图片框,您可以使用如下内容循环它们:

int x = 0;
foreach(Control c in this.Controls)
{
   if(c is PictureBox)
   {
     arrPictureBox[x++] = c
   }
}
for (int i = 0; i < arrPictureBox.Length; i++)
{
    arrPictureBox[i] = this.Controls["picChair" + i];
}

如果所有图片框都在同一表单上,并且是表单上唯一的图片框,则可以使用如下内容循环它们:

int x = 0;
foreach(Control c in this.Controls)
{
   if(c is PictureBox)
   {
     arrPictureBox[x++] = c
   }
}
for (int i = 0; i < arrPictureBox.Length; i++)
{
    arrPictureBox[i] = this.Controls["picChair" + i];
}

让我们预测一下,如果您使用的是
WinForms
,并且
pictureBoxes
已经存在,那么您可以使用以下功能:

int x = 0;
foreach(Control c in this.Controls)
{
   if(c is PictureBox)
   {
     arrPictureBox[x++] = c
   }
}
for (int i = 0; i < arrPictureBox.Length; i++)
{
    arrPictureBox[i] = this.Controls["picChair" + i];
}

让我们预测一下,如果您使用的是
WinForms
,并且
pictureBoxes
已经存在,那么您可以使用以下功能:

int x = 0;
foreach(Control c in this.Controls)
{
   if(c is PictureBox)
   {
     arrPictureBox[x++] = c
   }
}
for (int i = 0; i < arrPictureBox.Length; i++)
{
    arrPictureBox[i] = this.Controls["picChair" + i];
}

您可以使用下面的列表

  List<string> arrPictureBox = new List<string>();
        for (int i = 0; i < 20; i++)
        {
            arrPictureBox.Add("picChair" + i);
        }
        var result = arrPictureBox.ToArray();
List arrPictureBox=new List();
对于(int i=0;i<20;i++)
{
arrPictureBox.添加(“picChair”+i);
}
var result=arrPictureBox.ToArray();

希望有帮助。

您可以使用下面的列表

  List<string> arrPictureBox = new List<string>();
        for (int i = 0; i < 20; i++)
        {
            arrPictureBox.Add("picChair" + i);
        }
        var result = arrPictureBox.ToArray();
List arrPictureBox=new List();
对于(int i=0;i<20;i++)
{
arrPictureBox.添加(“picChair”+i);
}
var result=arrPictureBox.ToArray();


希望能有所帮助。

你是如何创建picChair的?@LOLslowSTi如果“picChairXX”是表单上的控件,它将与许多问题中的一个重复,如(通过类似搜索可以找到更多)。。。那么可能不是控制而是什么?通过反射?如果你只是想要一个简洁的符号,你可以使用
arrPictureBox=new[]{picChar0,picChair1,picChair2}
…有趣的是,人们只是假设事情并回答问题。这里显然没有提供足够的信息来给出一个简洁的答案。根据给出的信息,唯一的答案是
SomeType[]arrPictureBox={picChair0,picChair1,picChair2,picChair3,picChair4,picChair5,picChair6,picChair7,picChair8,picChair9,picChair10,picChair11}我只是想知道是否有可能将上面的代码放在一个循环中,我所做的应用类型是windows窗体,picChairx是图片框(控件)你是如何创建picChair的?@LOLslowSTi如果“picChairXX”是窗体上的控件,那么它将与下面的许多问题中的一个重复(更多信息可以通过搜索找到,如)…那么可能不是控制,而是什么?通过反射?如果您只需要一个简洁的符号,您可以使用
arrPictureBox=new[]{picChar0,picChair1,picChair2}
…有趣的是,人们只是假设事情并回答问题。这里显然没有提供足够的信息来给出简明的答案。根据给出的信息,唯一的答案是
SomeType[]arrPictureBox={picChair0,picChair1,picChair2,picChair3,picChair4,picChair5,picChair6,picChair7,picChair8,picChair9,picChair10,picChair11};
我只是想知道是否可以将上面的代码放在一个循环中,我所做的应用类型是windows窗体,而picChairx是图片框(控件)它看起来像是一个表单控件(
PictureBox
)。您可以循环遍历所有控件,以获取所有以
PictureBox
开头的PictureBox,并将其添加到列表中(如果需要的话,可以排列)。如果是windows表单应用程序,则不可能获取所有类型的(PictureBox)来自表单对象还是什么?@RonBeyer是真的,但是你信任设计者正确命名控件,信任开发者不要以破坏逻辑的方式重命名控件。这是可能的,但我真的不明白显式地向数组添加12项有什么错。@AlexeiLevenkov喜欢50%的问题我想说的是,这项研究是在没有研究的情况下完成的yes@AlexeiLevenkov可能是一顶用于“阅读OP的思想”的卡纳克帽子。它看起来像是一个表单控件(
PictureBox
)。您可以循环遍历所有控件,以获取所有以
PictureBox
开头的PictureBox,并将其添加到列表中(如果需要,可以进行排列)。如果是windows窗体应用程序,则无法获取所有类型的(picturebox)来自表单对象还是什么?@RonBeyer是真的,但是你信任设计者正确命名控件,信任开发者不要以破坏逻辑的方式重命名控件。这是可能的,但我真的不明白显式地向数组添加12项有什么错。@AlexeiLevenkov喜欢50%的问题我想说的是,这项研究是在没有研究的情况下完成的yes@AlexeiLevenkov也许是一顶Carnac帽子,用来“读懂OP的思想”以及arrPictureBox的大小?我没有投票反对你。你可以通过
新建PictureBox[this.Controls.Count(c=>c is PictureBox)]
来制作arrPictureBox,但是你可以做
this.Controls.Where(c=>c是PictureBox)。toArray();
我的回答只是一个简单的例子,说明了如何在窗体上循环使用特定类型的控件,而不是一个完整的解决方案,假设这是在Windows窗体(如origi)上使用的