C#6 getter and setters

Luc*_*cas 3 c# getter-setter c#-6.0

我正在使用C#6.0在类中创建属性的getter和setter:

private int _id { get; set; }

public int Id => _id;
Run Code Online (Sandbox Code Playgroud)

但是编译器说:

无法将属性或索引器"Id"分配给 - 它是只读的

如何在不创建这样的getter和setter的情况下修复它:

private int _id { get; set; }

public int Id 
{
   get { return this._id; }
   set { this._id = value; }
}
Run Code Online (Sandbox Code Playgroud)

Zor*_*vat 7

使用=>的简写语法只构造一个只读属性.

private int _id;
public int Id => _id;
Run Code Online (Sandbox Code Playgroud)

这相当于auto-property,它是只读的:

public int Id { get; }
Run Code Online (Sandbox Code Playgroud)

如果您希望您的属性既可设置又可获取,但公开只能获取,那么定义私有的setter:

public int Id { get; private set; }
Run Code Online (Sandbox Code Playgroud)

这样你就不需要任何私人领域了.