如何增加列表名称?

时间:2014-02-10 15:02:24

标签: c# loops increment

我将首先向您展示我的代码,因为我很难找到解释我想要的单词,我有一个包含坐标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];
            }

2 个答案:

答案 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]);