用C#原子属性只能获取,如何设置值?

时间:2018-09-23 15:20:39

标签: c# properties

C#允许使用以下语法定义只读原子属性

// Read-only property
public int MyReadOnlyProp { get; }

但是,由于背景私有属性是在后台定义的,因此我不确定如何设置此属性的值。

您有什么想法?

2 个答案:

答案 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