Property/Accessor 使用表达式主体运算符时出现歧义

Property/Accessor ambiguity when using Expression Body operators

使用 C# (.Net 4.6),假设此代码:

public class test
{
    private bool _a = true;

    public test() { }

    public bool a => _a;
}

public bool a => _a; 实现是否与以下相同:

public bool a { get => _a; }

或:

public bool a
{
    get => _a;
    set => _a = value;
}

?

也就是说,如果在 Property/Accessor 上使用单个表达式主体声明(而不是同时声明 getset 分别)是生成的功能 read/write 还是只读的?

我尝试查看微软的帮助(此处:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties),但它只在一句话中提到了表达式主体,并且根本不清楚其中的区别。

您将只有 get 访问器。所以这个:

public bool a => _a;

将对此进行评估:

public bool a
{
    get
    {
        return _a;
    }
}

您可以在 SharpLap

中找到代码编译的中间步骤和结果
public bool a => _a;

实现相同:

public bool a { get => _a; }

并且:

static bool _a = true;
public bool a { get; set; } = _a;

实现相同:

public bool a
{
    get => _a;
    set => _a = value;
}