Каждому известно, что инициализация readonly полей класса может осуществляться только при помощи инициализатора поля или же в конструкторе.
class Person { private readonly int _age; public Person() { _age = 10; } }А что если нам надо провести инициализацию например в каком-нибудь методе класса и вызвать его из конструктора? Например так
class Person { private readonly int _age; public Person() { Init(); } private void Init() { _age = 10; } }Компилятор нам этого сделать не позволит. Выход из данной ситуации есть и состоит он в применении ref и out модификаторов.
class Person { private readonly int _age; public Person() { Init(out _age); } // Применяем out но можно и ref private void Init(out int age) { age = 10; } }И это сработает! На этот раз компилятор ругаться не будет. Вот такой вот небольшой обходной путь при инициализации readonly полей из методов класса.
Комментариев нет:
Отправить комментарий