代码之家  ›  专栏  ›  技术社区  ›  David

.NET中自动属性的用途

  •  8
  • David  · 技术社区  · 14 年前

    为什么会这样:

        public string Foo {get;set;}
    

    被认为比这更好:

        public string Foo;
    

    我一辈子都做不到。有人能发光吗?

    谢谢

    2 回复  |  直到 13 年前
        1
  •  12
  •   Dirk    14 年前

    因为可以透明地(从客户机代码的角度)更改setter/getter的实现,所以如果直接公开基础属性(因为它不与二进制兼容),则无法执行相同的操作。

    但是,有一种与自动属性相关联的代码味道,因为它们使得在不经过第二次考虑的情况下,很容易公开类状态的某些部分。这在Java中也存在,在许多项目中你会发现 get/setXxx 一对一对地暴露内部状态(通常不需要它,“以防万一”),这使得属性基本上是公开的。

        2
  •  1
  •   Felix Ungman    14 年前

    而目的在于 领域 对象状态 存储 ,目的是 财产 仅仅是 接近 . 这种区别可能比实际情况更具概念性,但自动属性为声明两者提供了一种方便的语法。