我現在處於兩難的境地。的(降低的)任務是重新設計如下的數據保持器類設置可爲空屬性的默認值的首選方法是?
class Stuff
{
public String SomeInfo { get; set; }
}
以容納空不能返回的需求。我可以想出兩種方法來實現這一點,經過15分鐘的深思熟慮後,我根本無法決定哪一個是首選。
構造函數的方法。
class Stuff
{
public String SomeInfo { get; set; }
public Stuff() { SomeInfo = String.Empty; }
}
財產的方法。
class Stuff
{
private String _SomeInfo;
public String SomeInfo
{
get { return _SomeInfo ?? String.Empty; }
set { _SomeInfo = value; }
}
}
注意,東西實例的創建可以使用構造以及初始化完成,如果這是任何意義。據我所知,不會有任何其他限制(但你知道客戶的規格並不總是反映現實)。
嗯 - 您的第一個選項不符合您的要求 - 因爲我仍然可以將該屬性設置爲null。 #2是你唯一真正的選擇。 –
如果通過初始化您意味着某種形式的反序列化,請注意某些實現不會執行構造函數代碼。 – Rafal
#2上的另一個小調味道可能是在設置值時驗證輸入,而不是在檢索時驗證輸入。如果你發現你經常檢索'null/Empty'值,而不是在進行設置時優先檢查一次/很少。編輯:請注意,這假定您足夠警惕不要將後臺字段設置爲空。 –