C# 更改列表中的点
我已经编写了一个简单的类,C# 更改列表中的点,c#,C#,我已经编写了一个简单的类,point,我想在列表中使用它 在清单中我有3点。如果我打印它: for (int i = listOfPoint.Count -1; i >=0; i--) { Console.WriteLine(listOfPoint[i].toString()); } 输出为: (32,10) (33, 10) (34, 10) 现在,我想这样做: for (int i = listOfPoint.Count -1; i > 0; i--) { l
point
,我想在列表中使用它
在清单中我有3点。如果我打印它:
for (int i = listOfPoint.Count -1; i >=0; i--)
{
Console.WriteLine(listOfPoint[i].toString());
}
输出为:
(32,10)
(33, 10)
(34, 10)
现在,我想这样做:
for (int i = listOfPoint.Count -1; i > 0; i--)
{
listOfPoint[i] = listOfPoint[i - 1];
}
在此之后-打印:
(33,10)
(34, 10)
(34, 10)
在此之后-我想更改listOfPoint[0]
的Y值,以便:
listOfPoint[0].Y=11;
再次打印列表,输出为:
(33,10)
(34, 11)
(34, 11)
为什么输出不是:
(33, 10)
(34, 10)
(34, 11)
(33, 10)
(34,10)
(34, 11)
我怎样才能做到这一点呢?在“将它们向上移动一”(循环的秒数)的末尾,listOfPoint[0]和listOfPoint[1]指向同一个对象。要避免此问题,请添加此行:
listOfPoint[0] = new Point(listOfPoint[1].X, listOfPoint[1].Y);
这是因为数组中有两个元素引用同一个对象。这是由于指针 尝试执行此操作以避免出现问题:
for (int i = listOfPoint.Count -1; i > 0; i--)
{
//Pass the value not the pointer
listOfPoint[i] = new Point(listOfPoint[i-1].X, listOfPoint[i-1].Y);
}
发布你的
要点
课程。并向我们展示如何创建listOfPoints
listOfPoint[i]=listOfPoint[i-1]
不创建新的点
对象。您有两个元素引用相同的点
对象。您可能应该使点
成为结构
,而不是类
。如果适用,也可以使用WinForms的内置版本。您应该了解两者之间的区别