Подтвердить что ты не робот

Почему я не могу назначить свойство лямбда-синтаксиса только для чтения в конструкторе?

Мой случай:

public class A
{
    public string _prop { get; }
    public A(string prop)
    {
        _prop = prop; // allowed
    }
}

Другой случай:

public class A
{
    public string _prop => string.Empty;
    public A(string prop)
    {
        // Property or indexer 'A._prop' cannot be assigned to -- it is read only
        _prop = prop;
    }
}

Оба синтаксиса:

public string _prop { get; }

и

 public string _prop => string.Empty;

создать свойство только для чтения. Но почему я не назначаю его во втором случае?

4b9b3361

Ответ 1

public string _prop => string.Empty;

равно:

public string _prop { get { return string.Empty; } }

Итак, string.Empty подобен методу метода в методе get.

public string _prop { get; }

равно:

private readonly string get_prop;
public string _prop { get { return get_prop;} }

Итак, вы можете назначить get_prop значение из конструктора;

Дополнительная информация в в статье.