Добрый день, столкнулся с с таким вопросом, имеется автосвойство с методом доступа 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
Насколько мне известно, при использовании автосвойства приватное поле создаётся неявно, почему тогда не возникает такая же ошибка?
Ответ
До недавнего времени возникала.
Это разрешили в шестой версии C# и код в итоге раскрывается в следующий
class MyClass{
private string name;
public string Name { get { return name;} }
public MyClass()
{
name= "Max";
}
}
Отсюда видно, что в конструкторе присваивается внутреннее поле, а не идет вызов самого свойства.
Комментариев нет:
Отправить комментарий