更“真实”:使用包含或不包含私有字段的属性。 即。
1
class A
{
int _field;
public int Field
{
get{ return _field;}
set{_field = value;}
}
}
2
class A
{
public int Field{get;private set;}
}
答案 0 :(得分:1)
Number 2会自动创建一个支持字段,因此您总是在“幕后”拥有一个私有字段(尽管在后一种情况下无法直接访问)。
答案 1 :(得分:0)
当您创建匿名属性编译器时为您创建相应的字段,因此它几乎相同,但您只能通过属性访问自动处理字段
答案 2 :(得分:0)
没有区别 - 编译器为您生成属性实现的方式与生成默认构造函数或using
语句的代码完全相同。这两个类几乎是100%等效,如果你反编译一个自动属性你可以看到(唯一的区别是编译器使用的生成的支持字段的名称)
class A
{
public int Field {get; private set;}
}
class A
{
int _field;
public int Field
{
get { return _field; }
private set {_field = value; }
}
}
完全取决于您的个人偏好。
答案 3 :(得分:0)
如前所述,第二个在编译时创建了支持字段。如果您希望该属性充当该字段的公共访问者,您通常可以定义自己的支持字段,您可以在其中添加自定义逻辑或阻止修改该值(使用setter上的private关键字)。