我将首先向您展示我的代码,因为我很难找到解释我想要的单词,我有一个包含坐标List<PointF> points;
的点列表,它们确切地说是20个坐标。我想将这20个点分成4个积分榜。这是我的4点积分:
List<PointF> Col1 = new List<PointF>();
List<PointF> Col2 = new List<PointF>();
List<PointF> Col3 = new List<PointF>();
List<PointF> Col4 = new List<PointF>();
这是我的代码:
int loop = 1;
while (loop <= 20)
{
var identifier = 1;
if (loop % 5 == 0)
{
identifier++;
}
else
{//Here is what I'm talking about, if I want it to be like Col1 + identifier.ToString(), something like that
Col.Add(new PointF(points.ElementAt(loop - 1).X, points.ElementAt(loop - 1).Y));
}
}
我想要做的是如果我的循环已经是5,我希望 Col1.add 为“Col2.add”,如果我的循环等于10,我想要 Col2.add 为“Col3.add”,如果我的循环等于15,我希望 Col3.add 为“Col4.add”。我不知道怎么说这个,但是,我想增加我的List名字。
我想要这样的东西,但它是 20 PictureBox 而不是变量。
for (int x = 1; x <= ExtractedBoxes.Count(); x++)
{
((PictureBox)this.Controls["pictureBox" + x.ToString()]).Image = ExtractedBoxes[x - 1];
}
答案 0 :(得分:3)
您可以使用Dictionary<int, List<PointF>>
作为suggested by @Adrian:
var result = new Dictionary<int, List<PointF>>();
int identifier = 0;
result[identifier] = new List<PointF>();
for (int loop = 0; loop < 19; loop++)
{
if ((loop - 1) % 5 == 0)
{
result[++identifier] = new List<PointF>();
}
result[identifier].Add(points[loop]);
}
有关替代方案,请参阅Split List into Sublists with LINQ。
答案 1 :(得分:1)
数组可能是更好的解决方案:
List<PointF>[] lists = {new List<PointF>(), new List<PointF>(), new List<PointF>(), new List<PointF>()};
for(int i=0;i<20;i++) lists[i/5].Add(points[i]);