c# - 如何为可能为 null 的对象执行 ToString?

标签 c# .net string object null

是否有一种简单的方法可以执行以下操作:

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/

相关文章:

c# - 一次将对象从List <T>中拉出多个ID?

c# - 如何用空格字符替换无数字字符?

c++ - 如何进行从 std::string_view 到 std::string 的转换

c# - 未设置 HttpWebRequest Cookie

c# - 这个开关盒怎么有无法访问的代码?

.net - 由于存储库 merge 尚未实现,是否有其他选择?

.net - AzMan 与 Windows Identity Foundation

java - 在 JAVA 中重新加载 url

c# - 分析可执行文件的工具

c# - c#中如何将pdf文件转换为excel