C#自动实现的属性

示例

自动实现的属性在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"); } } // 无效的代码

但是,自动实现的属性对其访问器可以具有不同的访问修饰符:

public bool IsValid { get; private set; }

C#6允许自动实现的属性根本没有设置器(使其不可变,因为它的值只能在构造函数中设置或进行硬编码):

public bool IsValid { get; }    
public bool IsValid { get; } = true;

有关初始化自动实现的属性的更多信息,请阅读自动属性初始化程序文档。