[英]Default value of a property
如果您有這樣的對象:
public class Foo
{
private int _id;
public int id
{
get { return _id; }
set { _id = value; }
}
private string _name;
public string name
{
get { return _name; }
set { _name = value; }
}
}
並且您希望將id初始化為-1並將其命名為String.Empty,最佳做法是什么? (以及為什么)
這樣做:
private int _id = -1
要么
在構造函數中設置_id = -1和name = String.Empty?
這不僅僅是一個風格問題。 只有少數幾個案例是功能性問題
取決於你想要什么時候設置...
private int _id = -1
將在調用構造函數之前初始化_id。
字段方法簡潔,獲得了大量的投票,但我的偏好(對於簡單屬性)將使用自動屬性,在這種情況下,您被迫使用構造函數:
public Foo() {
Id = -1;
Name = "";
}
public int Id {get;set;}
public string Name {get;set;}
您也可以考慮使用[DefaultValue(-1)]
等,這有助於設計人員和序列化程序,但這不會影響自動實現的屬性(或常規屬性)的初始值 - 它只是附加信息。
對我而言,將其設置為“內聯”而不是使用構造函數似乎更能表明意圖。 功能上他們是一樣的。
CLR向導可能會糾正我,但我相信這兩種方法在功能上是相同的,但您可以提出一個參數,即在構造函數中設置默認值更明確,更明顯,但也有點麻煩。
內聯初始化由C#編譯器添加到構造函數的頂部,因此實際上沒有區別。 我個人更喜歡總是添加構造函數,即使它只是一個默認的構造函數。
這主要是風格偏好的問題。 我通常在構造函數中分配它們,因為它是實例化對象時發生的所有數據和過程的理想位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.