Каждому известно, что инициализация 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 полей из методов класса.
Комментариев нет:
Отправить комментарий