[英]C# constructor initializing properties instead of fields?
假設您必須使用構造函數來初始化一些字段...
class Foo
{
private int price;
public Foo(int price)
{
this.price = price;
}
}
我知道通常構造函數會初始化一些字段,但是如果我用它初始化屬性有什么區別。 例如
class Foo
{
private int price { get; set; }
public Foo(int price)
{
this.price = price;
}
}
該代碼似乎可以正常工作,但是我的問題是這是否是一種好的做法,我應該這樣做嗎?
構造函數初始化屬性很好,但是擁有私有的自動實現屬性很少有用。 我將始終使用屬性而不是非私有狀態的字段(無論這些屬性是否自動實現),並且私有屬性在不重要的情況下才有意義,例如執行驗證或其他計算。 但是,如果我希望將其用於僅基於屬性的基於反射的庫,則只能將私有字段轉換為私有的自動實現的屬性。
絕對好
為了獲得更大的靈活性(例如,如果不需要 price),還可以通過對象初始化來實現:
class Foo
{
public Foo() {}
public int Price { get; set; }
}
var newFoo = new Foo(){ Price = someVariable };
請參閱: https : //msdn.microsoft.com/zh-cn/library/bb397680.aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.