似乎每个C#静态分析器在看到公共字段时都想抱怨.但为什么?当然,有些情况下公共(或内部)领域就足够了,拥有它get_
和set_
方法的财产是没有意义的吗?如果我确定我不会重新定义该字段或添加它(副作用是坏的,对吧?) - 不应该是一个简单的字段就足够了怎么办?
那里有很多建议你不应该公开地公开你的字段,而是使用普通的属性.我一遍又一遍地看到它.
我理解这些论点,但在大多数情况下我认为这不是一个好建议.
有没有人有一个真正重要的时间的例子?在写一个琐碎的财产时,将来可能会有一些重要的事情(或者当没有使用它时会让他们陷入真正的麻烦)?
编辑:DataBinding参数是正确的,但不是很有趣.DataBinding代码中的一个错误是它不接受公共字段.因此,我们必须编写属性来解决该bug,而不是因为属性是明智的类设计选择.
编辑:要清楚,我正在寻找现实世界的例子,而不是理论.真正重要的时刻.
编辑:在setter上设置断点的能力似乎很有价值.为调试器设计我的代码是不幸的:我宁愿调试器变得更聪明,但考虑到我们的调试器,我将采用这种能力.好东西.
在这两者之间:
有财产:
class WithProperty
{
public string MyString {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
有了字段:
class WithField
{
public string MyString;
}
Run Code Online (Sandbox Code Playgroud)
显然我应该选择第一个.为什么?
我听说过这里的观点是允许接口更改,但如果我有第二个,并将其更改为第一个,则不需要更改其他代码.重新编译时,所有内容都将指向该属性.
我错过了一些重要的东西吗?
使用在类的属性中获取/设置的新方法,如:
public string FirstName {
get; set;
}
Run Code Online (Sandbox Code Playgroud)
为什么不简单地将属性FirstName公开而没有访问者?