首页 新闻 会员 周边

有关 int.parse和int.tryparse的困惑

1
悬赏园豆:5 [已解决问题] 解决于 2012-02-21 13:22

 public static int StrToInt(string val)
        {
            int intval = 0;
            int.TryParse(val, out intval);
            return intval;
        }
        public static int StrToInt2(string val) {
            try
            {
                return int.Parse(val);
            }
            catch (Exception)
            {
                return 0;
            }
        }

这两个方法有什么不同吗?

 

什么时候用int.tryparse()方法。 它和int.parse()有什么不一样啊??

holly Yang的主页 holly Yang | 初学一级 | 园豆:10
提问于:2012-02-21 11:35
< >
分享
最佳答案
1

一、int.Parse(string 变量名)

  该方式是将数字内容的字符串转换为int类型,如果字符串的内容为Null ,则抛出ArgumentNullException异常;如果字符串内容不是数字,则抛出FormatException异常。

  使用该方法只能处理字符串的内容,而且转换后的字符串内容要在int类型的可表示范围之内

二、int.TryParse(string s, out int result)

  该方式也是将数字内容的字符串转换为int类型,但是该方式有比int.Parse 优越的地方,就是它不会出现异常,最后一个参数result是输出值,如果转换成功则输出相应的值,转换失败则输出0。

收获园豆:2
初薰 | 菜鸟二级 |园豆:207 | 2012-02-21 11:38
其他回答(1)
0

第一种方式是对的,第二种方式代码建议不要用。我个人的习惯是:有可能出现异常时(比如尝试parse一个用户输入的string),用TryParse。当不可能出现异常(或者说出现异常属于事故级),比如我要parse一个确保是int的string时,直接parse不捕获异常。确保是int的string大概是这样的情况: 比如我从数据库中读取一个string,这个string是我之前的代码写入到数据库的,已经检查过了是int。那么这种情况下直接parse。因为如果这种情况下还抛异常,说明是之前的写入代码检查逻辑有问题,应该去修改那里的代码而不是把这里改成tryparse。

收获园豆:2
水牛刀刀 | 园豆:6350 (大侠五级) | 2012-02-21 12:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册