2010-04-21 66 views
6

有沒有一種簡化的方式來取消在C#中的字符串?有沒有一種簡化的方式來取消在C#中的字符串?

這將是等效的(如果「X」是一個字符串):

string y = x == null ? "" : x; 

我猜我希望有一些運營商,將工作是這樣的:

string y = #x; 

如意想,嗯?

我走到這一步,是對String類的擴展方法最接近:

public static string ToNotNull(this string value) 
{ 
    return value == null ? "" : value; 
} 

,讓我做的事情:

string y = x.ToNotNull(); 

上的任何改進,任何人嗎?

+1

我避免使用空字符串來避免此問題。如果別人正在創建空字符串,暴力可能是必要的。因人而異。 – Greg 2010-04-21 10:47:21

+0

您最後一個例子的工作原理非常可怕,因爲您在對象上調用方法來檢查對象是否爲null。我知道它是由於擴展方法是靜態的,但它看起來有點不對勁。 – ntziolis 2010-04-21 10:48:24

+0

空字符串是邪惡的,用String.Empty實例化並避免如上所述的邏輯。 – 2010-04-21 10:51:30

回答

0

如果需要此reguarly,而不是擴展方法,你可能要考慮創建自己的類型,其行爲類似於可空,且共享同一因爲有一個System.Nullable.GetValueOrDefault();方法。不幸的是,你只能在值類型上使用System.Nullable,所以你不能將一個可爲空的字符串作爲標準。

相關問題