我想知道其他人在做什么,比如小数的parse/try parse。在PHP语言中,我将编写一个名为GetValueOrDefault( value,default)的方法,该方法接受两个参数-第一个参数是您希望解析为整数或小数的字符串或值,第二个参数是在解析失败时的默认值。
我想在.net中实现这样的功能,但我看到的是:
decimal salary = 0.0; //initialize salary
if (!Decimal.TryParse(myStringValue, out salary))
salary = 0;所以对我来说,"Tryparse“布尔返回类型对我来说不是必需的-我没有采取任何特殊的操作,也不在乎。我想要的只是“如果有一个转换失败,那么默认回到我初始化的值,否则什么也不做。”
另外,我不想做Parse,因为我的理解是这会抛出异常。我不需要捕获,因为我已经初始化了变量(在try..catch中我还应该做什么?我不需要在任何地方登录)。
我真的应该写一个扩展方法或辅助工具方法来做上面的事情吗?我觉得有一个简单的解决方案来解决这个问题,但我显然没有。
谢谢大家!
发布于 2014-04-18 22:44:30
如果您不关心它是否被解析,那么实际上就没有必要将它包装在if中。但是,如果失败,您的salary引用参数将为零。因此,在将salary初始化为除零以外的值的情况下,您应该关心它是否被解析。
发布于 2018-06-27 15:11:55
var salary = Decimal.TryParse(myStringValue, out var value) ? value : 0;发布于 2014-04-18 23:17:32
我总是使用一种扩展方法,与usr建议的方法非常相似,但略有不同:
public static decimal GetDecimalOrDefault(this string value, decimal defaultDecimal)
{
try
{
return Convert.ToDecimal(value);
}
catch(exception ex)
{
return defaultDecimal;
}
}然后你可以这样叫它:
decimal finalValue = 0.0;
string myStringValue = "123.456";
finalValue = myStringValue.GetDecimalOrDefault(finalValue);https://stackoverflow.com/questions/23156306
复制相似问题