我最近在代码中遇到异常,因为我正在修剪一个空字符串。 我用以下内容替换它:
SomeValue = (SomeString ?? "").Trim();
此代码可能会失败吗?
感谢。
注意:我知道我可以添加一个try / catch;我只是想在不使用try / catch的情况下使这一行防故障。
答案 0 :(得分:5)
这不会失败(即抛出NullReferenceException
),假设SomeString
确实是string
。
你可以通过多种方式实现同样的目标:
SomeValue = (SomeString == null)?string.Empty:SomeString.Trim();
答案 1 :(得分:2)
这不是我想要的方式,但不,现在不应该失败。
我可能会编写一个扩展方法,在检查null后调用trim。像这样:
public static string NullTrim(this String str) {
if(str == null) {
return string.Empty;
}
return str.Trim();
}
这允许编译和执行以下所有内容而不会出现错误:
"".NullTrim();
" test ".NullTrim();
((string)null).NullTrim();
答案 2 :(得分:2)
如果由于NullReferenceException
而失败,那么现在肯定不会因为而失败。至于其他方面,我不能没有背景说。