为什么我不能在构造函数中分配一个lambda语法只读属性?

时间:2016-12-23 06:34:42

标签: c#

我的情况:

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;

创建只读属性。但是为什么我不能在第二种情况下分配呢?

1 个答案:

答案 0 :(得分:16)

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;

the article中的更多信息。