黑马程序员技术交流社区

标题: int.Parse和int.TryParse与Convert.ToInt32的区别 [打印本页]

作者: 不经夸。    时间: 2014-3-3 13:38
标题: int.Parse和int.TryParse与Convert.ToInt32的区别
本帖最后由 不经夸。 于 2014-3-3 13:46 编辑

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace text
{
    class Program
    {
        //Convert.ToInt32与int.Parse,int.TryParse的区别
        static void Main(string[] args)
        {
            //表面上看,可见3个方法都实现了同样的效果!
            string str = "1234";
            int num = 0;

            

            num = int.Parse(str);
            Console.Write(num + "\r\n ");

            int.TryParse(str, out num);
            Console.Write(num + "\r\n");

            num = Convert.ToInt32(str);
            Console.Write(num + "\r\n ");

            Console.WriteLine("表面上看,可见3个方法都实现了同样的效果!");

            Console.WriteLine("华丽的分割线-------------------输入任意字符继续-------------------------------------------");//2
            Console.ReadLine();


            Console.WriteLine("我们把str1换成null会怎么样呢?");
            string str1 = null;
            int num1 = 0;

            //  图1   图3
            num1 = int.Parse(str1);
            Console.Write(num1 + "\r\n ");

            int.TryParse(str1, out num1);
            Console.Write(num1 + "\r\n");

            num1 = Convert.ToInt32(str1);
            Console.Write(num1 + "\r\n ");

            Console.WriteLine("int.Parse(str1)如果是null,则抛出异常System.ArgumentNullException:值不能为null");
            Console.WriteLine("int.TryParse(str1, out num1)如果是null,不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。");
            Console.WriteLine(" Convert.ToInt32(str1)如果是null时,不抛异常而是返回0;");

            Console.WriteLine("");
            Console.WriteLine("华丽的分割线-------------------输入任意字符继续-------------------------------------------");
            Console.ReadLine();


            Console.WriteLine("我们把str2换成字符串会怎么样呢?");
            string str2 = "fads";
            int num2 = 0;



            // 图4 图5
            num2 = int.Parse(str2);
            Console.Write(num2 + "\r\n ");

            
            int.TryParse(str2, out num2);
            Console.Write(num2 + "\r\n");

            // 图6
            num2 = Convert.ToInt32(str2);
            Console.Write(num2 + "\r\n ");

            Console.WriteLine("int.Parse(str1)如果不是数值类型,则抛出异常:System.FormarException:输入的字符串的格式不正确");
            Console.WriteLine("int.TryParse(str1, out num1)如果不是数值类型,不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。");
            Console.WriteLine(" Convert.ToInt32(str1)如果不是数值类型,则抛出异常:System.FormarException:输入的字符串的格式不正确");

            Console.ReadLine();
        }
    }
}

总结:
第一个:
   如果是数字的话,三个方法运行都一样

第二个:
   如果是null的话,
int.Parse(str1)如果是null,则抛出异常System.ArgumentNullException:值不能为null;
int.TryParse(str1, out num1)如果是null,不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。;
Convert.ToInt32(str1)如果是null时,不抛异常而是返回0;

第三个:
   如果是字符串的话,
int.Parse(str1)如果不是数值类型,则抛出异常:System.FormarException:输入的字符串的格式不正确;
int.TryParse(str1, out num1)如果不是数值类型,不抛异常,会返回true或false来说明解析是否成功,如果解析错误,调用方将会得到0值。;
Convert.ToInt32(str1)如果不是数值类型,则抛出异常:System.FormarException:输入的字符串的格式不正确;

注意:
要运行起来需要注释一些代码

YW((_YACK@ANL){S_I)VBID.jpg (63.58 KB, 下载次数: 31)

图1

图1

%2MDSX}U3`8QE17CN()FPHO.jpg (36.75 KB, 下载次数: 50)

图2

图2

BW4EVLS4(9L8~N~(~U45EIG.jpg (136.51 KB, 下载次数: 49)

图3

图3

SLRHKD11SAFN3_{`]R[B]PD.jpg (115.84 KB, 下载次数: 42)

图4

图4

3[}~@KSP)3HS~`M9}8{Y}C3.jpg (71.85 KB, 下载次数: 33)

图5

图5

ZN[O73{]%5)AIHYORD32%_2.jpg (68.24 KB, 下载次数: 60)

图6

图6

作者: §風過無痕§    时间: 2014-3-3 19:17
  1. static void Main(string[] args)
  2.         {
  3.     string m_str = "heima";
  4.     string m_str1 = "";
  5.     string str = "123";
  6.     int number;

  7.     Convert.ToInt32
  8.     19个重载  参数什么类型都可以
  9.     number = Convert.ToInt32(m_str1 );
  10.     其内部也是调用int.Parse方法   只是加了一层判断 如果待转换字符串为空则抛出异常


  11.     int.Parse
  12.     4个重载   参数只能是字符串
  13.     number = int.Parse(m_str);


  14.     TryParse
  15.     2个重载   参数只能是字符串 并且返回值是bool类型
  16.     number = int.TryParse(m_str);error
  17.     bool b = int.TryParse(m_str, out number);


  18.     Console.ReadKey();
  19.         }
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2