之间是否存在根本区别?
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
和
public string Name {get; set;}
答案 0 :(得分:10)
答案 1 :(得分:2)
没有什么根本的,你可以通常在他们之间安全地改变....直到某些东西使用了字段名称(我在这里看BinaryFormatter
...)。< / p>
否则,不。您通常可以在不中断的情况下进行更改,例如添加逻辑或向字段添加属性。
答案 2 :(得分:1)
基本上没有根本区别,如果你想在20个属性中执行此操作时,#2只是为你节省了很多行,如果你不需要预先封装,但希望将来可以选择。
答案 3 :(得分:1)
对于您的类的外部使用者(假设_name是私有的),它们是相同的,除非您使用BinaryFormatter之类的东西,它使用反射来存储对象的内部状态。
对于您的班级,主要区别在于您在使用自动属性时无法访问该字段。这意味着您无法执行某些操作,例如将该属性用作ref或out参数。例如,如果您有一个int值并且您正在构造函数中读取默认值,则不能说Int32.TryParse(s, out Range)
。你可以说Int32.TryParse(s, out _range)
。