在ToString()之前检查null

Dsc*_*duc 75 .net c# string properties

这是场景......

if (entry.Properties["something"].Value != null)
  attribs.something = entry.Properties["something"].Value.ToString();
Run Code Online (Sandbox Code Playgroud)

虽然有效且正常工作,但这看起来很难看.如果我在执行ToString()之前没有检查null,那么如果属性为null,则抛出异常.有没有更好的方法来处理这种情况?

非常感激!

Rex*_*x M 121

8年后更新(哇!)以涵盖c#6的空条件运算符:

var value = maybeNull?.ToString() ?? String.Empty;
Run Code Online (Sandbox Code Playgroud)

其他方法:

object defaultValue = "default";
attribs.something = (entry.Properties["something"].Value ?? defaultValue).ToString()
Run Code Online (Sandbox Code Playgroud)

我也使用了这个,这不是非常聪明但方便:

public static string ToSafeString(this object obj)
{
    return (obj ?? string.Empty).ToString();
}
Run Code Online (Sandbox Code Playgroud)


Dal*_*gan 41

如果您的目标是.NET Framework 3.5,那么我认为最优雅的解决方案是扩展方法.

public static class ObjectExtensions
{
    public static string NullSafeToString(this object obj)
    {
        return obj != null ? obj.ToString() : String.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后使用:

attribs.something = entry.Properties["something"].Value.NullSafeToString();
Run Code Online (Sandbox Code Playgroud)


小智 39

Convert.ToString(entry.Properties["something"].Value);
Run Code Online (Sandbox Code Playgroud)

  • 这是有效的,因为如果value为null,它返回空字符串. (5认同)