Convert.ToInt32()与int.Parse():
demo1:
string str="123";
int num1=Convert.ToInt32(str); //正确
int num2=int.Parse(str); //正确
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.ReadKey();
demo2:
string str="123abc";
int num1=Convert.ToInt32(str); <span style="color:#FF0000;"><strong>//会发生异常</strong></span>
int num2=int.Parse(str); <strong> <span style="color:#FF0000;">//会发生异常</span></strong>
Console.WriteLine(num1);
Console.WriteLine(num2);
Console.ReadKey();
本质上,Convert.ToInt32()与int.Parse()是一样的。
通过反编译软件可知:Convert.ToInt32()方法内部实际上就是调用的方法int.Parse()。
所以int.Parse()的转换效率要高于Convert.ToInt32(),尽管这个效率差别微乎其微。
int.TryParse():
demo3:
string str="123";
int num3=0;
bool b=int.TryParse(str,out num3);//<strong>返回bool类型的值,转换成功</strong>
Console.WriteLine("转换结果:{0}",b);
Console.ReadKey();
结果:
demo4:
string str="123abc";
<strong>int num3=0; //转换失败,返回0</strong>
bool b=int.TryParse(str,out num3);//<strong>返回bool类型的值,转换失败不会发生异常</strong>
Console.WriteLine("转换结果:{0}",b);
Console.ReadKey();
结果:
当我们使用int.TryParse()方法的时候,如果转换成功则返回true,并将转换后的结果赋给out后面的int参数里面,
如果转换失败则返回false,out后面的int参数值为0(不是因为:int num3=0,如下例)。
demo5:
string str="123abc";
<strong>int num3=100; //转换失败,依然返回0</strong>
bool b=int.TryParse(str,out num3);//<strong>返回bool类型的值,</strong><span style="color:#FF0000;"><strong>转换失败不会发生异常</strong></span>
Console.WriteLine("转换结果:{0}",b);
Console.ReadKey();
结果: