因此,在自动实现的可用性和属性的初始化之后,我甚至需要为我的属性创建一个字段吗?
这似乎更清洁:
class A {
public int X {
get;set;
} = 1;
}
比这个:
class A {
int x = 1;
public int X {
get {
return x;
}
set {
x = value;
}
}
}
答案 0 :(得分:3)
在第一种情况下,编译器已经提供了一个支持字段 - 它只是隐含的(并且它给出了一个你无法在代码中引用的名称)。请注意,有作为生成代码中的支持字段,因为属性本身实际上只是一对方法,其中一些元数据链接它们 - 属性的存在不会向状态添加任何状态宾语。状态仅 存储在字段中。
当写在一行时它甚至更干净 - 我通常将其视为:
class A
{
public int X { get; set; } = 1;
}
答案 1 :(得分:1)
在这种情况下你不需要支持字段,但是如果你想用例如OnPropertyChanged()操作属性那么你需要有一个支持字段
public int X {
get {
return x;
}
set {
x = value;
OnPropertyChanged()
}
}