首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Parse和TryParse

Parse和TryParse
EN

Stack Overflow用户
提问于 2014-04-18 22:38:07
回答 3查看 245关注 0票数 3

我想知道其他人在做什么,比如小数的parse/try parse。在PHP语言中,我将编写一个名为GetValueOrDefault( value,default)的方法,该方法接受两个参数-第一个参数是您希望解析为整数或小数的字符串或值,第二个参数是在解析失败时的默认值。

我想在.net中实现这样的功能,但我看到的是:

代码语言:javascript
复制
  decimal salary = 0.0; //initialize salary
  if (!Decimal.TryParse(myStringValue, out salary))
      salary = 0;

所以对我来说,"Tryparse“布尔返回类型对我来说不是必需的-我没有采取任何特殊的操作,也不在乎。我想要的只是“如果有一个转换失败,那么默认回到我初始化的值,否则什么也不做。”

另外,我不想做Parse,因为我的理解是这会抛出异常。我不需要捕获,因为我已经初始化了变量(在try..catch中我还应该做什么?我不需要在任何地方登录)。

我真的应该写一个扩展方法或辅助工具方法来做上面的事情吗?我觉得有一个简单的解决方案来解决这个问题,但我显然没有。

谢谢大家!

EN

回答 3

Stack Overflow用户

发布于 2014-04-18 22:44:30

如果您不关心它是否被解析,那么实际上就没有必要将它包装在if中。但是,如果失败,您的salary引用参数将为零。因此,在将salary初始化为除零以外的值的情况下,您应该关心它是否被解析。

票数 0
EN

Stack Overflow用户

发布于 2018-06-27 15:11:55

代码语言:javascript
复制
var salary = Decimal.TryParse(myStringValue, out var value) ? value : 0;
票数 0
EN

Stack Overflow用户

发布于 2014-04-18 23:17:32

我总是使用一种扩展方法,与usr建议的方法非常相似,但略有不同:

代码语言:javascript
复制
public static decimal GetDecimalOrDefault(this string value, decimal defaultDecimal)
{
    try 
    {
        return Convert.ToDecimal(value);
    }
    catch(exception ex)
    {
        return defaultDecimal;
    }
}

然后你可以这样叫它:

代码语言:javascript
复制
decimal finalValue = 0.0;
string myStringValue = "123.456";
finalValue = myStringValue.GetDecimalOrDefault(finalValue);
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23156306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档