use*_*403 3 c# refactoring coalesce null-coalescing-operator
我有一个方法会收到一个string,但在我可以使用它之前,我必须将其转换为int.有时它可以null,我必须改变它的价值"0".今天我有:
public void doSomeWork(string value)
{
int SomeValue = int.Parse(value ?? "0"); //it can throw an exception(i know)
}
Run Code Online (Sandbox Code Playgroud)
我做到了,但我的老板让我重构它:
public void doSomeWork(string value)
{
if(string.IsNullOrEmpty(value))
value = "0";
int SomeValue = int.Parse(value);
}
Run Code Online (Sandbox Code Playgroud)
在您看来,什么是最好的选择?
Joh*_*ski 11
为什么不用TryParse()?
public int doSomeWork(string stringValue)
{
int value;
int.TryParse(stringValue, out value);
return value;
}
Run Code Online (Sandbox Code Playgroud)
0如果值不是实际数字,则上面的代码将返回.
所以在我看来,我的例子是最具可读性的.我尝试解析int并返回它.没有合并运算符,也没有使用字符串方法.此方法还处理解析时可能抛出的异常(除非您想要例外...).
就个人而言,我会选择更正版本的老板 - 可能还有更多的支票 - 如果字符串是空的,你的意思是,如你所说抛出一个异常,因为""不是一个格式正确的数字和?? 只检查null.
就像是:
public int doSomeWork(string value) {
int someValue = 0;
if (!string.IsNullOrEmpty(value)) {
Int.TryParse(value, out someValue);
}
}
Run Code Online (Sandbox Code Playgroud)
这解决了价值等于"四十二"的问题.
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |