有没有一种简单的方法可以执行以下操作:
String s = myObj == null ? "" : myObj.ToString();
我知道我可以执行以下操作,但我确实认为这是一种黑客行为:
String s = "" + myObj;
如果 Convert.ToString() 有适当的重载,那就太好了。
C# 6.0 编辑:
使用 C# 6.0,我们现在可以拥有原始方法的简洁、免转换版本:
string s = myObj?.ToString() ?? "";
或者甚至使用插值:
string s = $"{myObj}";
原答案:
string s = (myObj ?? String.Empty).ToString();
or
string s = (myObjc ?? "").ToString()
更加简洁。
不幸的是,正如已经指出的那样,您通常需要在任一侧进行强制转换才能使其适用于非字符串或对象类型:
string s = (myObjc ?? (Object)"").ToString()
string s = ((Object)myObjc ?? "").ToString()
因此,虽然它可能看起来很优雅,但演员阵容几乎总是必要的,而且在实践中并不那么简洁。
正如其他地方所建议的,我建议也许使用扩展方法来使其更干净:
public static string ToStringNullSafe(this object value)
{
return (value ?? string.Empty).ToString();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)