📅  最后修改于: 2023-12-03 15:23:45.982000             🧑  作者: Mango
有时候,我们需要对一个对象执行 ToString
操作来进行转换或输出,但是该对象可能为空,如果我们直接对其调用 ToString
方法,会抛出空引用异常。那么怎样才能在对象为空的情况下,避免空引用异常,成功执行 ToString
呢?
下面我们介绍几种方法供程序员参考:
可以先对该对象进行判断,判断其是否为空,然后再进行 ToString
操作。这种方法可以使用条件表达式简化代码。
string str = obj == null ? "" : obj.ToString();
这样就可以避免空引用异常,如果该对象为空,则将字符串转换为空字符串。
空合并运算符 ??
可以用来判断和处理可能为空的对象。如果该对象为空,则返回一个默认值。这样就可以避免空引用异常,如果该对象为空,则将字符串转换为空字符串。
string str = obj?.ToString() ?? "";
上述代码中,?.
可以判断该对象是否为空,如果为空则返回 null
,否则进行 ToString
操作。而 ??
就表示如果第一个操作数为空,则返回第二个操作数。
在 C# 中,String.Empty
表示一个空字符串。可以使用 String.Empty
代替 ""
作为默认值,使得代码更加直观。
string str = obj == null ? String.Empty : obj.ToString();
可以编写一个扩展方法,专门用来处理可能为空的对象。
public static class ObjectExtension
{
public static string SafeToString(this object obj)
{
return obj == null ? "" : obj.ToString();
}
}
使用方法如下:
string str = obj.SafeToString();
通过扩展方法的方式,我们可以将处理程序分离出来,使得代码更加清晰。