【发布时间】:2014-06-03 02:12:48
【问题描述】:
我想知道其他人在用 parse/try parse for decimals 作为例子做了什么。 在 PHP 中,我会编写一个名为 GetValueOrDefault(value, default) 的方法,它接受两个参数 - 第一个参数是您希望尝试解析为整数或小数的字符串或值,第二个参数是默认参数如果失败。
我想要在 .net 中这样的东西,但我看到了这个:
decimal salary = 0.0; //initialize salary
if (!Decimal.TryParse(myStringValue, out salary))
salary = 0;
所以对我来说,“Tryparse”布尔返回类型对我来说不是必需的——我没有采取任何特殊行动,也不在乎。我想要的只是“如果转换失败,则默认返回我初始化值的值,否则不做任何事情。”
另外,我不想进行 Parse,因为我的理解是这会引发异常。我不需要 try..catch,因为我已经初始化了变量(在 catch 中我还应该做什么?我不需要在任何地方登录)。
我真的应该写一个扩展方法或辅助工具方法来完成上述工作吗?我觉得我显然缺少一个简单的解决方案。
谢谢大家!
【问题讨论】:
-
是的,如果你想拥有一个与现有方法不同的方法,你应该编写自己的方法。借助
TryParse方法,清楚地实现您想要的方法很容易。 -
如果你的默认值总是0,你就不需要再写一个方法了。如果
TryParse()无法解析您的字符串,它会将数字的值设置为 0。 -
我会考虑避免将您的方法命名为
GetValueOrDefault()-Nullable<T>类型已经拥有该方法。为什么不TryParseOrDefault()? -
@GoldenDragon 是对的。对于您的方案(如果您不需要知道它是否失败),删除
if会给您相同的结果 -
Out 参数不必初始化,因此您可以使用:十进制工资; if (!Decimal.TryParse(myStringValue, out Salary)) Salary = 0.0;
标签: c# type-conversion