c#点数组

时间:2018-09-30 15:13:43

标签: c# arrays point

目前,我使用来存储X和Y

Point[] points1 = new Point[] { 
    new Point { X = 262, Y = 321 }, 
    new Point { X = 325, Y = 334 }, 
    new Point { X = 278, Y = 387 }
};

如何全局设置变量'points1'?这样我就可以使用循环来提取数据X和Y。

对我尝试过的代码进行采样

Point[] points1 = new Point[]{};

for(int i = 0 ; i <10 ;i ++)
{
  points1 = new Point[] { new Point { X = i, Y = i++}};
}

但总是获得最后的结果,而不是在数组列表中。

4 个答案:

答案 0 :(得分:2)

而不是在每次迭代时创建新的数组(类型为Point[]),您应该创建一个新的 array-element (输入Point)并将其放入数组:

for(int i = 0; i < 10; i++)
{
    points1[i] = new Point { X = i, Y = i++ };
}

此外,您将两次递增i,一次是在for循环声明中,一次是在创建新的Point时。因此,您的X-和Y-坐标获得以下值:

{ 0, 2, 4, 6, 8 }. 

要创建10点而不是5点,您应该忽略其中的一种增量。

无论如何,我建议改用List<Point>,因为它可以轻松地向其中添加和删除元素,所以它更具动态性:

List<Point> points = new List<Point>();
points.Add(new Point(...));

答案 1 :(得分:1)

for(int i = 0 ; i <10 ;i ++)
{
points1 = new Point[] { new Point { X = i, Y = i++}};
}

不设置数组中每个项目的值。每次迭代都会将points1重新分配为新数组。请注意,points1正在分配,而不是points1的元素。为此,您需要将新的Point值分配给points1 [i]。

答案 2 :(得分:1)

您可以直接为该数组设置点:

Point[] points1 = new Point[10];
for (int i = 0; i < 10; i++)
{
    points1[i] =  new Point { X = i, Y = i };
}

如果没有固定数量的点,则必须使用列表而不是数组。 这是一个示例:

List<Point> points1 = new List<Point>();
for (int i = 0; i < 10; i++) // can be any limit
{
    points1.Add(new Point { X = i, Y = i++ });
}
// you can convert to array at any time
var points = points1.ToArray();
Console.WriteLine(points1);

答案 3 :(得分:0)

        List<Point> points1 = new List<Point>();

        for (int i = 0; i < 10; i++)
        {
            points1.Add(new Point { X = i, Y = i++ });
        }