是否有一种简单的方法可以执行以下操作:
String s = myObj == null ? "" : myObj.ToString();
我知道我可以做到以下几点,但我真的认为这是一种 hack:
String s = "" + myObj;
如果 Convert.ToString() 对此有适当的重载,那就太好了。
最佳答案
C# 6.0 编辑:
使用 C# 6.0,我们现在可以拥有原始方法的简洁、无转换版本:
string s = myObj?.ToString() ?? "";
甚至使用插值:
string s = $"{myObj}";
原答案:
string s = (myObj ?? String.Empty).ToString();
或
string s = (myObjc ?? "").ToString()
更加简洁。
不幸的是,正如已经指出的那样,您通常需要在任何一侧进行强制转换才能使其适用于非 String 或 Object 类型:
string s = (myObjc ?? (Object)"").ToString()
string s = ((Object)myObjc ?? "").ToString()
因此,虽然它看起来很优雅,但转换几乎总是必要的,而且在实践中并不是那么简洁。
正如其他地方所建议的,我建议使用扩展方法来使它更清洁:
public static string ToStringNullSafe(this object value)
{
return (value ?? string.Empty).ToString();
}
关于c# - 如何为可能为 null 的对象执行 ToString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3987618/