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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

周平武

黑马帝

  • 黑马币:0

  • 帖子:30

  • 精华:0

© 周平武 黑马帝   /  2012-2-10 11:46  /  1954 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 周平武 于 2012-2-10 18:48 编辑

什么时候自动转换,什么时候需要强制类型转换?

评分

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

查看全部评分

3 个回复

倒序浏览
一般说:
1)小范围的到大范围的就是自动转换。
比如:
int a=10;
long b;
b=a;
说明:在这里是将int类型的变量的值赋值给long类型的变量,但是因为long类型的范围比int大,所以自动转换就可以。
2)大范围类型的变量的值赋给小范围类型的变量的时候,就需要强制转换才能成功。
例如:
long a=10;
int b;
b=a;
编译则不会成功,需要强制转化,但是可能会有数据溢出。即:b=Convert.ToInt32(a);
说明:int、long、float、double、用户自定义的结构类型、枚举类型等都是属于值类型,string、char,接口类型、类类型等属于引用类型。
3)不同类型(值类型和引用类型)之间的转换需要强制转换。
例如:
string a="";
int b;
b=Convert.ToInt32(a);

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
宋天琪 + 1
周平武 + 1 赞一个!

查看全部评分

回复 使用道具 举报
谢谢,我自己已经清楚了
回复 使用道具 举报
可以这样理解,会比较好记:
如果转换可能造成进度丢失,那么一定是要用强制转换的,
如果没有丢失精度的可能,那么编译器就可以进行隐式转换。

评分

参与人数 2技术分 +1 黑马币 +2 收起 理由
shilvyanfgq + 2
宋天琪 + 1

查看全部评分

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