Ссылка только для чтения с типом класса - PullRequest
0 голосов
/ 30 сентября 2018

Я пытаюсь создать свойство только для чтения (функция c # 7.2).

public class JobStatus
{
    public int Id { get; set; }
}

public class Job
{
    public ref readonly JobStatus Status => ref _jobStatus;
    private readonly JobStatus _jobStatus = new JobStatus
    {
        Id = 4
    };
}

class Program
{
    static void Main(string[] args)
    {
        var job = new Job();
        job.Status.Id = 5;
    }
}

Этот код успешно компилируется.Я ожидаю какую-то ошибку, что я пытаюсь обновить поле свойства только для чтения.Использую ли я ref только для чтения функция возврата неправильно?

1 Ответ

0 голосов
/ 01 октября 2018

Из того, что я нашел в этой статье , вы должны понимать это как следующее

Пометка параметра как «только для чтения» или «в» не делает его значениеотносится к неизменным.Хотя функция, объявляющая параметр, не может вносить в него изменения, значение можно изменить в другом месте.Это не требует многопоточности, это просто способ доступа к исходной переменной, к которой относится параметр.

Итак, поскольку ваш класс не является неизменяемым, его можно изменить в другом месте.Эта функция в основном связана с производительностью при передаче эталонного значения около

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...