首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ToString()之前检查null

在ToString()之前检查null
EN

Stack Overflow用户
提问于 2009-02-15 05:34:36
回答 11查看 85.8K关注 0票数 77

这是一个场景..。

代码语言:javascript
复制
if (entry.Properties["something"].Value != null)
  attribs.something = entry.Properties["something"].Value.ToString();

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

非常感谢!

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2009-02-15 05:39:46

8年后更新(哇!)要介绍c# 6's null-conditional operator

代码语言:javascript
复制
var value = maybeNull?.ToString() ?? String.Empty;

其他方法:

代码语言:javascript
复制
object defaultValue = "default";
attribs.something = (entry.Properties["something"].Value ?? defaultValue).ToString()

我还使用了这个,虽然不是很聪明,但很方便:

代码语言:javascript
复制
public static string ToSafeString(this object obj)
{
    return (obj ?? string.Empty).ToString();
}
票数 129
EN

Stack Overflow用户

发布于 2009-02-15 06:06:40

如果您的目标是.NET Framework3.5,在我看来,最优雅的解决方案是扩展方法。

代码语言:javascript
复制
public static class ObjectExtensions
{
    public static string NullSafeToString(this object obj)
    {
        return obj != null ? obj.ToString() : String.Empty;
    }
}

然后使用:

代码语言:javascript
复制
attribs.something = entry.Properties["something"].Value.NullSafeToString();
票数 42
EN

Stack Overflow用户

发布于 2011-01-25 06:45:10

代码语言:javascript
复制
Convert.ToString(entry.Properties["something"].Value);
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/550374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档