让我们考虑一下我有一个名为AvatarSize的公共属性,如下所示,
public class Foo { ... public Size AvatarSize { get { return myAvatarSize; } set { myAvatarSize = value; } } ... }
现在,如果目标类想要设置此属性,那么他们需要按以下方式执行,
myFoo.AvatarSize = new Size(20, 20); //this is one possible way
但是,如果我尝试这样设置,
myFoo.AvatarSize.Height = 20; //.NET style myFoo.AvatarSize.Width = 20; //error
编译器给我一个错误,说明它无法修改返回值.我知道它为什么会发生,但我希望它也支持第二种方式.请帮我解决一下.
PS对不起,如果标题是荒谬的
Size
是一个结构.作为ValueType,它是不可变的.如果你改变它的属性,它只会修改堆栈中的对象实例,而不是实际的字段.在你的情况下,AvatarSize
属性只能使用结构构造函数来设置:new Size(20, 20)
.