修改变量和属性之间的区别

Øyv*_*hen 8 .net c#

对此可能有一个非常合乎逻辑的解释,但我有一个问题.

假设我有一个名为_rect的Rectangle类型的变量.我现在可以说_rect.X = 50; 没有任何问题.

现在我有一个带有一个名为Rect的属性的类,它暴露了内部变量_rect.

然后,如果我尝试编写,Rect.X = 50;我得到以下编译错误:

无法修改'TestClass.Rect'的返回值,因为它不是变量.

我可以写Rect = new Rectangle( 50, Rect.Y, Rect.Width, Rect.Height)为不可变类型,但对于非不可变类型,还有其他方法吗?

我想为这个矩形字段使用自动属性,但它真的很烦人,无法在类本身内修改它.

是否有任何方法没有做出支持领域和放弃自动财产?

Dar*_*rov 10

出现此错误的原因是,与引用类型(类)相比,Rectangle是值类型(struct).您无法修改X属性,因为当您使用Rect属性getter时,将返回矩形的新值(getter是一个函数).如果它是一个引用类型,你正在操作指针,这是可能的.

这是值得注意的价值与参考类型的重要方面.