物业访问者

时间:2011-07-11 19:36:09

标签: c# oop object properties

之间是否存在根本区别?
public string Name  
{  
  get  
  {  
    return _name;  
  }  
  set  
  {  
    _name = value;  
  }  
} 

public string Name {get; set;}

4 个答案:

答案 0 :(得分:10)

  1. 您可以访问内部字段,第二种情况是自动生成
  2. 您可以在VS中设置断点,在第二个中您不能。

答案 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)