A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭正续 中级黑马   /  2012-7-30 07:51  /  2860 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

将用户输入的内容转换成int类型时候,假如能转换成功的话,用convert.Toint32();和int.Parse();哪个语句好,这俩有什么区别啊?

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

13 个回复

倒序浏览
Convert.ToInt32();可以转换的类型很多,bool值,Char,Decimal,DateTime等等很多都可以,
int.Parse();只能转换string类型。

当然这都是在你说的“假如能转换成功的话”的前提下。
Convert.ToInt32()转换null值返回为0,转换空字符串会抛出异常;
int.Parse();转换null和空字符串都会抛出异常。

如果仅仅转换字符串的时候,那么建议使用int.TryParse();它和int.Parse很像,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
在使用Convert.ToInt32( value)时还需要注意一点,如果value 为两个整数中间的数字,则返回二者中的偶数;即 3.5转换为4,4.5 转换为 4,而 5.5 转换为 6。不过4.6可以转换为5,4.4转换为4。
注意:在使用强制转换(int)时,int(4.6) = 4,Int转化其他数值类型为Int时没有四舍入.

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
我感觉convert.Toint32();比较好些
int.Parse();据说底层还是convert的

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
两者都是把数据转换个int类型,区别其实不大,只是略微有一点:
区别在于:
如果你有一个字符串
string str=null;
int num=0;
num=Convert.ToInt32(str); //Covert.ToInt32()在null时不抛异常而是返回0
而num=int.Parse(str);是要抛出异常的。
还有int.Parse的值要高于Convert.ToInt32.

另外还有一个int.TryParse()不会抛出异常,会返回一个true或者false来说明解析是否成功。也就是说它往往只是用来判断能不能把种非int类型的值转换成int类型

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
没多大区别,convert.Toint32()其实还是调用的int.Parse();

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
许庭洲 黑马帝 2012-7-30 13:59:30
7#
1,Int.Parse(参数) 语句,针对字符串;
2,Convent.Toint32(参数)语句,针对所有数据类型;
3,Convert.ToInt32(null);//返回0
4,int.Parse(null);//程序产生异常
5,a. Convert.ToInt32(double value),如果 value 为两个整数中间的数字,返回二者中的偶数;
     例如:b. int.Parse("3.5") ;//输出4
              b. int.Parse("4.5") ;//输出4
6,b. int.Parse("1.5"); //直接报错,程序异常提示输入字符串的格式不正确。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
王峰 中级黑马 2012-7-30 14:12:38
8#
如果输入内容可以转换,Convert.ToInt32()转换null值返回为0,转换空字符串会抛出异常;
int.Parse();转换null和空字符串都会抛出异常

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
(int)和Int32.Parse(),Convert.ToInt32()三者的区别:

第一个在对long 类型或是浮点型到int 类型的显式强制转换中使用,但是如果被转换的数值大于 Int32.MaxValue 或小于 Int32.MinValue,那么则会得到一个错误的结果。

第二个在符合数字格式的 string 到 int 类型转换过程中使用,并可以对错误的 string 数字格式的抛出相应的异常。

第三个则可以将多种类型的值转换为 int 类型,也可以对错误的数值抛出相应的异常。

无论进行什么类型的数值转换,数值的精度问题都是我们必须考虑的

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
convert.toint32(null)返回0,不会抛出异常,可以转换不同的类型。int.parse()只是针对字符串的。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
Convert.ToInt32()转换时态度强硬一点,而int.Parse()则没有前者那么强硬,而且Convert能转换的种类也就很多,如string,Int16,Int32等等……

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Suko 初级黑马 2012-7-31 22:42:27
12#
如果你是从String类型转换成int类型,请最好用int.TryParse。Convert.ToInt32的转换参数可以是多样的,但是谨记try catch 捕获异常。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
我总结下:
1. 可转换类型的不同
Convert.ToInt32()几乎可以把各种类型(包括object 引用类型)的值转换为int类型。
int.Parse()只能转化string。
2. 对null的处理
Convert.ToInt32(null)会返回0而不会产生任何异常,但int.Parse(null)则会产生异常。
3.       对浮点数的处理
Convert.ToInt32(double value)
如果 value 为两个整数中间的数字,则返回二者中的偶数;即3.5转换为4,4.5 转换为4,而5.5转换为6。不过4.6可以转换为5,4.4转换为4
int.Parse("4.5")
运行的时候报错:"输入字符串的格式不正确".
4性能方面
差别不大

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
Convert.ToInt32()可以转换的类型较多,也就是它的重载较多,如:double、char、string、datetime等;而int.Parse()只能转换数字字符串。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马