在`StringBuilder`后添加空值

4

我正在从一个XML文件中读取并使用StringBuilder构建字符串。但有时我的Element.Attributes丢失,此时字符串为null。

string key  = (string)EventId.Descendants("properties").Elements("ID").Attributes("key").FirstorDefault();

在获取所有属性值后,我正在进行字符串构建:
sb.Append(key.PadRight(33));

但有时key的值可能为null,这会导致错误:

在调用方法之前,请检查对象是否为null

即使值为null,我想将空字符串附加到StringBuilder中。

3个回答

13
你可以简单地编写:

 sb.Append((key ?? "").PadRight(33));

这个??被称为Null 合并运算符

它的作用是评估左侧的值,如果该值为null,则返回右侧的值。换句话说,它是一种快捷方式。

sb.Append((key == null ? "" : key).PadRight(33));

1
你可以这样做: sb.Append(key?.PadRight(33));


1
这样不行。如果键为空,PadRight(33)将不会被评估。 - Steve
是的,这个可以用,我尝试过了,但填充不起作用。我需要填充来保持可读性。 - user726720

1
我不确定这是否符合您的要求?
if (key != null)
    sb.Append(key.PadRight(33));
else
    sb.Append("".PadRight(33));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接