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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cmcm2014 中级黑马   /  2014-3-27 22:45  /  1536 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 cmcm2014 于 2014-3-28 16:17 编辑

突然想到这2个 我自己写代码时 对于类型转换时 用到过as  但是is却没用过,想知道两者间是否有联系,是否有区别!

3 个回复

倒序浏览
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2. 不会抛出异常;
3. 如果对象为null,刚返回false;
比如:
object obj = "1234";  
if (obj is string) //执行第一次类型兼容性检查  
{  string s = (string)obj; //执行第二次类型兼容性检查,并转换  
    MessageBox.Show("转换成功!");  
}else  {  
    MessageBox.Show("转换失败!");  
}

as转换规则:
1.检查对象类型的兼容性,并返回转换结果,如果不兼容则返回null;
2.不会抛出异常;
3.如果结果判断为空,则强制执行类型转换将抛出NullReferenceException异常;
object obj = "123";  
string str = obj as string; //执行第一次类型兼容性检查,并返回结果  
if (str != null)   
    MessageBox.Show("转换成功!");  
else  
    MessageBox.Show("转换失败!");  


注:as比is少执行一次兼容性检查,性能可能会高一点点。
回复 使用道具 举报 1 0
siyuefeiyang 发表于 2014-3-27 22:58
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2. 不会抛出异常;

非常详细,完全理解,谢谢·
回复 使用道具 举报
又长知识了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马