C # атомарное свойство ТОЛЬКО получить, как установить значение? - PullRequest
0 голосов
/ 23 сентября 2018

C # позволяет определять атомарное свойство только для чтения со следующим синтаксисом

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

Однако, учитывая, что за сценой задано частное свойство бэк, я не уверен, как установить значение этого свойства,

Что ты думаешь?

Ответы [ 2 ]

0 голосов
/ 23 сентября 2018

Свойства только для получателя могут быть инициализированы через инициализатор

 public int MyReadOnlyProp { get; } = 100;

или в конструкторе

public MyClass()
{
    MyReadOnlyProp = 100;
}

, но не могут быть изменены впоследствии.Как вы сказали: они доступны только для чтения.


Альтернативой являются автоматически реализуемые свойства с закрытым или защищенным установщиком, позволяющие в любое время изменить значение в классе (или структуре),но не снаружи.Это делает их доступными только для чтения извне.

 public int MyReadOnlyProp { get; private set; }

И, конечно, есть старые добрые явно реализованные свойства

 private int _myReadOnlyProp;
 public int MyReadOnlyProp { get { return _myReadOnlyProp; } }

или с новым синтаксисом тела выражения

 private int _myReadOnlyProp;
 public int MyReadOnlyProp => _myReadOnlyProp;
0 голосов
/ 23 сентября 2018

Установите его в конструкторе или в самом определении свойства:

public int MyReadOnlyProp { get; } = 2; // or any integer expression valid at construction time
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...