自动实现的属性
自动实现的属性是在 C#3,引进 的自动实现的属性都被定义为一个空的 getter 和 setter(存取):
public bool IsValid { get; set; }
在代码中写入自动实现的属性时,编译器会创建一个只能通过属性的访问器访问的私有匿名字段。
上面自动实现的属性语句相当于编写这个冗长的代码:
private bool _isValid;
public bool IsValid
{
get { return _isValid; }
set { _isValid = value; }
}
自动实现的属性在其访问器中不能包含任何逻辑,例如:
public bool IsValid { get; set { PropertyChanged("IsValid"); } } // Invalid code
但是,自动实现的属性可以为其访问者提供不同的访问修饰符:
public bool IsValid { get; private set; }
C#6 允许自动实现的属性根本没有 setter(使其成为不可变的,因为它的值只能在构造函数中设置或硬编码):
public bool IsValid { get; }
public bool IsValid { get; } = true;
有关初始化自动实现的属性的更多信息,请阅读 Auto-property initializers 文档。