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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵雅晴 中级黑马   /  2012-10-6 10:03  /  2068 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

比如 ing a = (int)b;和 int a = convert.toint32(b)有什么区别??

评分

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

查看全部评分

6 个回复

倒序浏览
区别是前者只能转换数值类型的变量;
后者有很多重载,可以转换其他类型变量。

比如:
Convert.ToInt32(true)
Convert.ToInt32("12345")

C#也是依赖于.net类库的。
只不过(int)是C#语言的功能。Convert.ToInt32()是.net类库中一个类的一个静态方法

评分

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

查看全部评分

回复 使用道具 举报
前者是显式类型转换,这是C#的转换方法,是C#语言的基本语法。
而Convert.Toxxxx()是.Net的转换方法,是.Net类库支持的。

也就是说第一种在C#中可以用,与.Net类库没有关系。
第二种可以在.Net下的任何语言中用,比如C#,VB,都适用,但是需要.Net类库的支持。

评分

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

查看全部评分

回复 使用道具 举报
神马王刚 来自手机 中级黑马 2012-10-6 12:34:22
板凳
前者类似于里氏转换,是同类型之间的转换,而后者是不同类型的转换,直观的说是转变,从一个类型变为另一个类型,两者显然不同
来自:黑马程序员训练营论坛 Windows Phone 7 客户端来自: WindowsPhone客户端

评分

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

查看全部评分

回复 使用道具 举报
int a = (int)b;
int a = convert.toint32(b);
前者是类型转换,后者是内容转换(Convert不再是内存级别的转换,而是考虑数据意义的转换。可以把姓名convert成人。convert是一个加工、改造的过程)
你不能把一个 string 强制转换成 int,隐式转换就更加不可能,例:
string text = "12306";
int a = (int)text;
然而上面的代码中 text 实际上储存的是一个数值,我们希望把这个数值提取出来并以 int 的形式储存起来以便日后的运算使用,这时候就是内容转换上场的时候了
string text = "12306";
int a = Convert.ToInt32(text);

评分

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

查看全部评分

回复 使用道具 举报
楼上说的已经十分的清楚了。呵呵{:soso_e129:}顶一个
回复 使用道具 举报
ing a = (int)b,很明显这个b值只能是double类型的才会用到强式转换。但用户输入的一般都是字符串类型的,这个强转已经满足不了要求了,所以就出现了可以把string类型转换成int类型
int a = convert.toint32(b),这里的b值可以是字符串或字符类型的,应用要广泛很多。

评分

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

查看全部评分

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