C# "new" command

本文关键字:quot command new | 更新日期: 2023-09-27 18:10:16

我有一个问题,当我试图重新定位面板时,例如命名为pPan,我有两种不同的方法来做到这一点:

在按钮的click事件中,我写入

pPan.Location = new Point (
  pPan.Location.X +10 , pPan.Location.Y );

或者我可以写:

pPan.Location.X += 10;

那么这里有什么区别呢?为什么我要创建这个new Point ?

C# "new" command

Location属性的类型是Point,它是一个结构体。您可能会收到类似

的错误。

不能修改的返回值"System.Windows.Forms.Control。Location',因为它不是一个变量

设置它的X、Y值。

,但你可以指定新的点对象:

pPan.Location = new Point (
  pPan.Location.X +10 , pPan.Location.Y );

Control.Location Property

因为Point类是一个值类型(Visual Basic中的结构),结构),它是按值返回的,这意味着访问属性返回控件左上角点的副本。所以,调整由此返回点的X或Y属性属性不会影响"左"、"右"、"顶"或"底"属性控件的值。要调整这些属性,请设置每个属性值,或者用新的Point设置Location属性。如果如果控件是窗体,则Location属性值表示在屏幕坐标的左上角。

问题:c#以编程方式更改对象的位置

如果Pointstruct,您必须使用第一个,因为当您调用该属性时,它返回Location的副本,并且您尝试修改该副本。

区别在于第一种方式是为Point对象分配新的内存。第二种方法是只改变现有对象的属性。

尽可能多地操作现有对象是一个很好的做法。所以我建议你用第二种方法来改变位置