C#允许使用以下语法定义只读原子属性
// Read-only property
public int MyReadOnlyProp { get; }
但是,由于背景私有属性是在后台定义的,因此我不确定如何设置此属性的值。
您有什么想法?
答案 0 :(得分:3)
只能使用Getter的属性通过初始化程序进行初始化
public int MyReadOnlyProp { get; } = 100;
或在构造函数中
public MyClass()
{
MyReadOnlyProp = 100;
}
,但此后不能更改。正如您所说:它们是只读的。
另一种选择是具有私有或受保护的setter的自动实现的属性,允许您随时在类(或结构)内而不是从外部更改值。这使它们从外部变为只读。
public int MyReadOnlyProp { get; private set; }
当然还有好的旧的显式实现的属性
private int _myReadOnlyProp;
public int MyReadOnlyProp { get { return _myReadOnlyProp; } }
或具有新表达式的语法
private int _myReadOnlyProp;
public int MyReadOnlyProp => _myReadOnlyProp;
答案 1 :(得分:-1)
在构造函数中或在属性定义本身中进行设置:
public int MyReadOnlyProp { get; } = 2; // or any integer expression valid at construction time