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 上使用单个表达式主体声明(而不是同时声明 get 和 set 分别)是生成的功能 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;
}
使用 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 上使用单个表达式主体声明(而不是同时声明 get 和 set 分别)是生成的功能 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;
}