我正在使用自动实现的属性。
我想解决以下问题的最快方法是声明我自己的支持变量?
public Point Origin { get; set; }
Origin.X = 10; // fails with CS1612
错误消息:无法修改“表达式”的返回值,因为
它不是一个变量
尝试修改作为结果的值类型
中间表达。因为该值没有被持久化,所以该值
将保持不变。
要解决此错误,请将表达式的结果存储在
中间值,或使用中间值的引用类型
表达。
这是因为Point
是一个值类型(struct
).
因此,当您访问Origin
您正在访问的属性copy类所持有的值,而不是像引用类型那样的值本身(class
),所以如果你设置X
属性,然后您在副本上设置属性,然后丢弃它,保持原始值不变。这可能不是您想要的,这就是编译器警告您的原因。
如果您只想更改X
值,你需要做这样的事情:
Origin = new Point(10, Origin.Y);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)