Wri*_*boy 5 c# properties .net-4.0
可能的重复:
是否应该通过属性访问同一类中的变量?
我最近遇到了这个问题,很好奇是否有某种标准,你应该在课堂上参考哪个标准。
我的意思是,无论您是直接访问成员变量还是通过属性(除非您需要避开一些自定义的 setter 代码),这都不应该有什么区别,但我想确保没有最佳实践。
partial class MyClass {
private string foo;
internal string Foo {
get {
return foo;
}
private set {
foo=value;
// I do other stuff
}
}
public void DoSomething() {
//Option 1;
Foo="some string";
//Option 2;
foo="some string";
}
}
Run Code Online (Sandbox Code Playgroud)
这不应该是你真正做出的选择。setter 中的代码要么应该运行,在这种情况下使用该属性,要么不运行,在这种情况下使用成员变量。在大多数情况下,一种是对的,一种是错的。在一般情况下,两者都不总是对/错,而且“无关紧要”的情况也是不寻常的。
例如,如果设置器代码正在触发“已更改”事件,您是否希望通知外部对象它已更改?如果您要更改它以响应先前的更改,可能不会(无限递归任何人?)如果不是,您可能想确保它被触发(这样您就不会更改值并且不会通知任何人更改)。
如果它只是验证所设置的值是否有效,那么要么您知道,在这种情况下,该值已经经过验证并且必须有效,在这种情况下无需再次验证;设置属性。如果您尚未验证要设置的内容,那么您希望运行验证逻辑,因此请使用该属性。
| 归档时间: |
|
| 查看次数: |
1475 次 |
| 最近记录: |