我需要在我的类型上实现一个只读 属性。此外,此属性的值将在构造函数中设置并且不会更改(我正在编写一个类来公开 WPF 的自定义路由 UI 命令,但这并不重要)。
我看到了两种方法:
-
class MyClass { public readonly object MyProperty = new object(); }
-
class MyClass { private readonly object my_property = new object(); public object MyProperty { get { return my_property; } } }
所有这些 FxCop 错误都说我不应该有公共(public)成员变量,看来第二种方法是正确的。正确吗?
在这种情况下,只获取属性和只读成员之间有什么区别吗?
如有任何意见/建议/等,我将不胜感激。
最佳答案
第二种方式是首选。
private readonly int MyVal = 5;
public int MyProp { get { return MyVal;} }
这将确保 MyVal
只能在初始化时赋值(它也可以在构造函数中设置)。
正如您所指出的 - 这样您就不会公开内部成员,从而允许您在将来更改内部实现。
关于c# - 如何实现只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3917796/