C# 创建一个空的点数组

C# 创建一个空的点数组,c#,arrays,points,C#,Arrays,Points,我试图创建一个空的点数组,为此我使用了以下方法 Point[] listapontos = new[]; //should create a empty point array for later use but doesn't. Point ponto = new Point(); //a no coordinates point for later use for (int i = 1; i <= 100; i++)

我试图创建一个空的点数组,为此我使用了以下方法

    Point[] listapontos = new[]; //should create a empty point array for later use but doesn't.
               Point ponto = new Point(); //a no coordinates point for later use
               for (int i = 1; i <= 100; i++) //cycle that would create 100 points, with X and Y coordinates
               {
                   ponto.X = i * 2 + 20;
                   ponto.Y = 20;
                   listapontos[i] = ponto;
               }
我遇到了一些麻烦,因为我无法创建空的点数组。我可以使用列表创建一个空字符串数组,但由于我需要两个元素,列表在这里没有用处

有什么提示吗?对于这个问题的提示也是受欢迎的

//应该创建一个空的点阵列以供以后使用,但不会

不,您指定的语法无效。如果需要空数组,可以使用以下任意一种:

Point[] listapontos = new Point[0];
Point[] listapontos = new Point[] {};
Point[] listapontos = {};
但是,您得到了一个包含0个元素的数组,因此以下语句:

listapontos[i] = ponto;
。。。然后将抛出一个异常。听起来您应该使用列表,或者创建大小为101的数组:

Point[] listapontos = new Point[101];
或者创建一个大小为100的数组,并更改您使用的索引-目前您没有为索引0分配任何内容

重要的是要理解在.NET中,数组对象在创建后不会改变其大小。这就是为什么通常使用List更方便的原因,它包装了一个数组,通过创建一个新数组来调整大小,并在需要时复制值

我可以使用列表创建一个空字符串数组,但是 需要两个元素,列表在这里没有用处

您可以这样定义一个类:

public class Point
{
    public double X {get;set;}
    public double Y {get;set;}
}
然后,您可以使用以下列表:


这不起作用的原因有两个。 首先,当你说

 Point[] listapontos = new[];
您使用的语法无效。应该更像

Point[] listapontos = new Point[100];
其次,当你写入数组时,你永远不会创建一个新的点。 Point是一个类,这意味着它是通过引用传递的。这意味着,无论何时,只要你写的是Ponto的地址,而不是一个新的Ponto

相反,你应该做的更像

for(int i = 0; i < 100; i++)
{
    listapontos[i] = new Point(i * 2 + 20, 20);
}

通过使用new关键字,您在内存中创建了一个新点,并将该点的地址存储在数组中,而不是将同一点的地址写入数组100次。

@Mathemats:不是。在这种情况下,ponto根本不是数组……所以我可以创建点列表,就像创建字符串列表一样简单?@ng80092b很高兴有用
for(int i = 0; i < 100; i++)
{
    listapontos[i] = new Point(i * 2 + 20, 20);
}