【发布时间】:2013-06-16 00:15:41
【问题描述】:
我试图构建一个如下所示的字符串,但我注意到它在使用 ?? 后被切断了。运算符,无论前一个值是否为空。
"Some Text" + System.Environment.NewLine +
varOne.ToString() ?? string.Empty + System.Environment.NewLine +
varTwo.ToString()...
除非我删除 ??操作员。环顾四周后,我发现这不是首选的方法,我可能应该使用 stringbuilder 代替,但我只是好奇为什么会发生这种情况?
【问题讨论】:
-
如果一个变量是
null,在它上面调用ToString会抛出。 -
框架中没有从
ToString返回null的类,我怀疑这样做是个好主意。所以ToString之后的空合并运算符没有意义。也许是这样:varOne == null ? string.Empty + System.Environment.NewLine : varOne.ToString() -
也许一些额外的括号可能会有所帮助。
??的优先级低于+。看看这个:msdn.microsoft.com/en-us/library/6a71f45d.aspx -
@TimSchmelter 很好的解释,谢谢。