我有一個屬性聲明如下:有沒有更好的方式在C#3.0中編寫這行C#代碼?
我需要這個值傳遞給另一個方法爲一個字符串,所以我認爲這樣做的唯一方式,以便如下:
MyProperty == null ? null : MyProperty.ToString()
當傳遞給方法的許多類似屬性時,這看起來很亂。
有誰知道是否有更好更簡潔的寫作方式?
哦,如果有人能想到一個更合適的標題的這個問題請隨時改變它...
我有一個屬性聲明如下:有沒有更好的方式在C#3.0中編寫這行C#代碼?
我需要這個值傳遞給另一個方法爲一個字符串,所以我認爲這樣做的唯一方式,以便如下:
MyProperty == null ? null : MyProperty.ToString()
當傳遞給方法的許多類似屬性時,這看起來很亂。
有誰知道是否有更好更簡潔的寫作方式?
哦,如果有人能想到一個更合適的標題的這個問題請隨時改變它...
你可以使用Nullable<T>.ToString()
override ...
var s = MyProperty.ToString(); // returns "" if MyProperty is null
你可以使用,而不是比較的HasValue:
MyProperty.HasValue ? MyProperty.Value.ToString() : null;
製作繩獲得包含屬性的類屬性,它不會亂文,你需要得到ŧ他字符串版本。
public decimal? MyProperty { get; set; }
public string MyPropertyString
{
get
{
return MyProperty.HasValue ? MyProperty.Value.ToString() : null;
}
}
您可以在Decimal上聲明擴展方法。
public static string Str(this decimal? value)
{
return value == null ? null : MyProperty.ToString()
}
你再這樣稱呼它:
MyProperty.Str()
否應該用十進制** **(可爲空) – 2009-08-07 05:30:51
如果確定有零istead空的,那麼:
(MyProperty ?? 0).ToString()
否則添加擴展方法:
public static string AsString(this decimal? val)
{
return val == null ? null : val.Value.ToString();
}
// Use:
MyProperty.AsString() // This will NEVER cause NullReferenceException
哇,真的嗎?學到了新東西。我永遠不會嘗試,認爲它會拋出空指針異常 – Paul 2009-08-07 04:35:33
哇!我不知道.ToString仍然工作爲空的空值。棒極了! – mezoid 2009-08-07 04:36:20
...但它聽起來像作者想要NULL,如果值是NULL !! ?? – 2009-08-07 05:44:20