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);
}