当前位置:  开发笔记 > 编程语言 > 正文

直接在C#中设置属性的属性

如何解决《直接在C#中设置属性的属性》经验,为你挑选了1个好方法。

让我们考虑一下我有一个名为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对不起,如果标题是荒谬的



1> DreamSonic..:

Size是一个结构.作为ValueType,它是不可变的.如果你改变它的属性,它只会修改堆栈中的对象实例,而不是实际的字段.在你的情况下,AvatarSize属性只能使用结构构造函数来设置:new Size(20, 20).

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有