如何将对象转换为字符串,但将空引用保留为null?

时间:2014-01-20 16:38:06

标签: c#

是否有更简洁的写作方式

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

即。如果someObj是一个空引用然后返回一个空字符串,否则调用该对象上的ToString()并返回它?

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

4 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:1)

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

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

并将其用作,

var aString = o.ToStringOrNull();

答案 2 :(得分:1)

没有这样的C#功能,但可能会,可以用?.语法称为 monadic null checking ,如{{3}中所述文章:

string aString = someObj?.ToString();

答案 3 :(得分:-4)

if(someObject == null) {
return null;
} else {
return someObject.ToString();
}

你的内容很简洁。