在我的项目上运行代码分析时,收到以下消息:
CA1051 : Microsoft.Design : Because field 'ClassName.VarName' is visible outside of its declaring type, change its accessibility to private and add a property, with the same accessibility as the field has currently, to provide access to it.
要解决此问题,我可以更改以下行:
Public VarName As String
到此:
Public Property VarName As String
我不明白为什么Property
关键字在这种特殊情况下如此重要。任何人都可以解释为什么将此成员更改为Property
会对代码分析产生重大影响吗?我做错了吗?
答案 0 :(得分:3)
使用“属性”可以为变量定义公共访问方法,而不是将这些变量公开。请参阅此处以获得更好的解释:http://msdn.microsoft.com/en-us/library/65zdfbdt%28v=vs.71%29.aspx
答案 1 :(得分:2)
将变量设为私有并提供公共属性来访问数据一直是很好的编码实践。
例如,如果您稍后需要添加一些在值更改时引发的事件,则将该代码粘贴到set属性中会更容易,并且不需要触及使用该属性的所有现有代码,如果你继续使用变量,然后决定你需要引发一个事件,你必须创建一个设置值的属性并引发事件,然后更新所有现有代码以使用你刚刚创建的新属性而不是变量。 / p>
答案 2 :(得分:2)
封装是OOD中的一个重要原则。如果你把你的成员暴露给他人(我知道,我已经在自己咯咯地笑),不能保证你能保持适当的状态。
通过使用属性,您可以通过定义有关如何访问成员的明确指南来保护成员的状态。
答案 3 :(得分:1)
Public Property VarName As String
声明提供封装级别的属性。您可以使用_VarName。
Public VarName As String
声明一个变量,它只提供此变量的单个公共实例,而不是封装。