【发布时间】:2020-08-01 15:42:15
【问题描述】:
使用 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;
}
?
也就是说,如果在属性/访问器上使用单个表达式主体声明(而不是分别声明 get 和 set)是读取的结果功能/write,还是只读的?
我尝试查看 Microsoft 的帮助(此处:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/properties),但它只在一句话中提到了表达式主体,并不清楚其中的差异。 ??????????
【问题讨论】:
-
如果你想要一个只读属性,为什么不使用
public bool a { get; }? -
@vc74 我不一定想要只是一个只读属性;这里的例子是故意高度简化的。我想知道的是,可以肯定, 是编译器管理此语法的方式,因此我可以在需要它提供的功能时使用它,而 不 使用它不正确。
-
好吧,
public bool a => _a;使您能够在内部(在类的代码中)修改a,但它对外部是只读的,所以它相当于public bool a { get { return a; } }(没有设置访问器) -
如果它“使您能够在内部(在类的代码中)修改一个,但它对外部是只读的”,那不是
public bool a { get => _a; private set => _a = value; }吗? -
不,
public bool a => _a即使在您的班级内,您也无法使用a = false(您当然可以使用_a = false)
标签: c# .net properties operators