C# 如果我有一个属性,我还需要一个字段吗?
因此,在自动实现和属性初始化可用之后,我甚至需要为我的属性设置一个字段吗 这似乎要干净得多:C# 如果我有一个属性,我还需要一个字段吗?,c#,properties,field,C#,Properties,Field,因此,在自动实现和属性初始化可用之后,我甚至需要为我的属性设置一个字段吗 这似乎要干净得多: class A { public int X { get;set; } = 1; } 除此之外: class A { int x = 1; public int X { get { return x; } set { x = value; }
class A {
public int X {
get;set;
} = 1;
}
除此之外:
class A {
int x = 1;
public int X {
get {
return x;
}
set {
x = value;
}
}
}
在这种情况下,您不需要一个支持字段,但如果您想使用OnPropertyChanged()等操作属性,则需要一个支持字段
public int X {
get {
return x;
}
set {
x = value;
OnPropertyChanged()
}
}
在这种情况下,您不需要一个支持字段,但如果您想使用OnPropertyChanged()等操作属性,则需要一个支持字段
public int X {
get {
return x;
}
set {
x = value;
OnPropertyChanged()
}
}
在第一种情况下,编译器已经提供了一个支持字段——它只是隐式的(并且给出了一个在代码中无法引用的名称)。请注意,在生成的代码中必须有一个支持字段,因为属性本身实际上只是一对方法,带有一些元数据链接它们-属性的存在不会向对象添加任何状态。状态仅存储在字段中 如果写在一行上,它甚至更干净——我通常认为:
class A
{
public int X { get; set; } = 1;
}
在第一种情况下,编译器已经提供了一个支持字段——它只是隐式的(并且给出了一个在代码中无法引用的名称)。请注意,在生成的代码中必须有一个支持字段,因为属性本身实际上只是一对方法,带有一些元数据链接它们-属性的存在不会向对象添加任何状态。状态仅存储在字段中 如果写在一行上,它甚至更干净——我通常认为:
class A
{
public int X { get; set; } = 1;
}