#c_sharp
Добрый день, столкнулся с с таким вопросом, имеется автосвойство с методом доступа get public string Name {get;} С помощью конструктора я присваиваю ему значение public MyClass() { Name = "Max"; } Автосвойство успешно принимает значение, в другом случае я явно указываю приватное поле и свойство с методом доступа get private string name; public string Name; { get { return name;} } Так же присваиваю значение с помощью конструктора public MyClass() { Name = "Max"; } И в данном случае я получаю ошибку Error CS0200 Property or indexer 'MyClass.Name' cannot be assigned to -- it is read only Насколько мне известно, при использовании автосвойства приватное поле создаётся неявно, почему тогда не возникает такая же ошибка?
Ответы
Ответ 1
До недавнего времени возникала. Это разрешили в шестой версии C# и код в итоге раскрывается в следующий class MyClass{ private string name; public string Name { get { return name;} } public MyClass() { name= "Max"; } } Отсюда видно, что в конструкторе присваивается внутреннее поле, а не идет вызов самого свойства.
Комментариев нет:
Отправить комментарий