我最近在我的代码中遇到了一个异常,因为我正在修剪一个空字符串。 我将它替换为以下内容:这个修剪代码可能会失败吗?
SomeValue = (SomeString ?? "").Trim();
此代码是否会失败?
谢谢。
注:我知道我可以添加一个try/catch;我只是希望在不使用try/catch的情况下使这条线路具有防故障功能。
我最近在我的代码中遇到了一个异常,因为我正在修剪一个空字符串。 我将它替换为以下内容:这个修剪代码可能会失败吗?
SomeValue = (SomeString ?? "").Trim();
此代码是否会失败?
谢谢。
注:我知道我可以添加一个try/catch;我只是希望在不使用try/catch的情况下使这条线路具有防故障功能。
这不会失败(即抛出NullReferenceException
),假设SomeString
确实是一个string
。
你可以达到同样在许多方面:
SomeValue = (SomeString == null)?string.Empty:SomeString.Trim();
这不是我会这样做的方式,但不是,现在不应该失败。
我可能会写一个扩展方法,在检查null之后调用trim。事情是这样的:
public static string NullTrim(this String str) {
if(str == null) {
return string.Empty;
}
return str.Trim();
}
这使得所有的下列编译和执行没有错误:
"".NullTrim();
" test ".NullTrim();
((string)null).NullTrim();
好的,谢谢你的想法;目前我正在与我拥有的路线走。 – frenchie
那么,如果有人因为NullReferenceException
失败,那么现在肯定不会失败因为的。至于其他方面,我不能说没有背景。
你能写一些小的单元测试来测试吗? –
我怀疑你的范围内的答案是否定的,它不会失败。正常操作失败的唯一原因是内存不足。 –
它以更加怪诞的方式失败。它产生垃圾数据,你不会知道它。 –