构造函数应该将自己的参数直接初始化为私有成员还是通过公共字段(C#centric)?

4 c# constructor initialization

例如,哪种方式更好

class Foo {
private string _Bar ; 
  Foo ( string bar)
  {
    _Bar = bar ; 
  }
 public string Bar 
 { 
   get { return _Bar ; //more logic here
   } 
   set { _Bar = value ;   //more logic could be added
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

要么

class Foo {
private string _Bar ; 
  Foo ( string bar)
  {
    this.Bar = bar ; 
  }
 public string Bar { 
  get { return _Bar ; //more logic could be added } 
  set { _Bar = value ; //more logic could be added }}
}
Run Code Online (Sandbox Code Playgroud)

编辑:我知道后者允许在其中添加更多逻辑,但是因为它使用它是合理的...

Gre*_*ech 6

无论哪种方式对班级有意义; 没有"最佳实践".

有时您可能希望确保您只执行属性可以执行的相同操作; 在这种情况下,使用该属性是有意义的.

有时候你想做的事情只能在构造函数中完成,这些事情违反了你可以通过属性构造后完成的事情,在这种情况下,使用该字段是有意义的.