我正在使用这两个属性
1)
int x = 0;
public int X
{
get
{
return x;
}
set
{
x = value;
}
}
2)
public string ID
{
get;
set;
}
这两个属性之间有什么区别。
答案 0 :(得分:2)
当您声明属性时,如下例所示, 编译器创建一个只能是的私有匿名支持字段 通过属性的get和set访问器访问。
Auto-Implemented Properties (C# Programming Guide)
唯一不同的是,在您的示例中,您仍然可以直接获取/设置支持字段,而不是使用该属性。使用自动实现的属性,您无法做到这一点。
答案 1 :(得分:0)
无。两者都是相同的,除了你可以从第二个片段不能做的第一个片段中做到这一点。
int x = 0;
public int X
{
get
{
return x;
}
set
{
if (value < 0) // A guard condition or some custom condition here
value = 0;
x = value;
}
}
您可以做一个更清晰的答案
private double seconds;
public double Hours
{
get { return seconds / 3600; }
set { seconds = value * 3600; }
}
答案 2 :(得分:0)
如果您反而问过,
“这两个代码片段之间有什么区别(不仅仅是两个属性之间)?”
您可能已经猜到了答案:在第一个代码段中,您还需要做一件事:您需要为您的属性x
明确声明一个支持字段。在第二个代码片段中,您不必执行此操作,因为编译器会为您执行此操作。
因此,两个代码段在功能上是相同的,除了,在第一个代码段中,您可以直接访问该属性的支持字段(x
)。在第二个片段中,没有办法执行此操作,因为支持字段是未命名/匿名的。