人们似乎教条地坚持在田野上使用公共财产,但为什么在简单财产的情况下它如此重要?
怎么
public int Foo { get; set; }
Run Code Online (Sandbox Code Playgroud)
非常不同于
public int Foo;
Run Code Online (Sandbox Code Playgroud)
?
在我的脑海中,我可以想到两者之间的实际差异:
除了这些非常罕见的情况之外,稍后将Foo更改为计算属性会导致更改0行代码.
Ree*_*sey 61
使用属性有几个明显的优点:
此外,几乎没有缺点.像这样的简单自动属性由JIT编译器内联,因此没有理由不使用它们.
另外,你提到:
除了这些非常罕见的情况之外,稍后将Foo更改为计算属性会导致更改0行代码.
这不需要更改代码,但它会强制您重新编译所有代码.从字段更改为属性是一个重大的API更改,这将需要重新编译引用程序集的任何程序集.通过使其成为自动属性,您可以发布新的二进制文件,并保持API兼容性.这是我上面提到的"版本化"优势......
Joh*_*nan 44
一个很好的理由是你可以改变获取/设置的可访问性.
public int Foo {get; protected set;}
Run Code Online (Sandbox Code Playgroud)
Eri*_*ert 26
属性是一种语言元素,它在逻辑上表示由类建模的事物的属性.汽车模型车; 颜色是汽车的财产; 因此,颜色是汽车的属性.
字段是表示类的实现细节的语言元素.您的汽车没有"颜色区域",因此您的程序代表汽车不应该暴露一个名为Color的字段.它可能包含私有实现细节,其中属性Color由字段实现,但这是私有实现细节,而不是模型的公共可访问部分.
归档时间: |
|
查看次数: |
21268 次 |
最近记录: |