【问题标题】:How to convert objects to strings, but leave null references as null?如何将对象转换为字符串,但将空引用保留为空?
【发布时间】:2014-02-09 22:35:48
【问题描述】:

有没有更简洁的写法

string aString = someObj == null ? null : someObj.ToString();

即如果 someObj 是空引用,则返回空字符串,否则在对象上调用 ToString() 并返回?

Convert.ToString() 没有帮助,因为它返回 String.Empty();我将结果传递给 XML 序列化程序,如果对象为空,我希望没有元素,而不是空元素。

【问题讨论】:

标签: c#


【解决方案1】:

您的代码非常简单。如果由于必须多次编写相同的片段而希望减少代码量,可以将代码放入扩展方法中:

static class SomeObjExtensions {
    public static string ToStringWithNull(this object someObj) {
        return someObj == null ? null : someObj.ToString();
    }
}

【讨论】:

  • 想知道ToStringOrNull 是否能更好地表达意思?
【解决方案2】:

没有这样的 C# 功能,但可能会有,并且可以使用?. 语法调用monadic null 检查,如probable C# 6.0 features 文章中所述:

string aString = someObj?.ToString();

【讨论】:

  • 接受这个答案,因为它讲述了当前情况的真相,同时为更光明的未来带来了希望:-)
【解决方案3】:

您可以创建一个描述操作的扩展方法,

public static class ObjectExtensions
{
    public static string ToStringOrNull(this object o)
    {
        return o == null ? null : o.ToString();
    }
} 

并将其用作,

var aString = o.ToStringOrNull();

【讨论】:

    【解决方案4】:
    if(someObject == null) {
    return null;
    } else {
    return someObject.ToString();
    }
    

    你的尽量简洁。

    【讨论】:

      猜你喜欢
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2016-05-25
      • 1970-01-01
      相关资源
      最近更新 更多