2010-04-21 71 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,所以你不能将一个可为空的字符串作为标准。

相关问题