黑马程序员技术交流社区
标题:
C# as和is的区别
[打印本页]
作者:
cmcm2014
时间:
2014-3-27 22:45
标题:
C# as和is的区别
本帖最后由 cmcm2014 于 2014-3-28 16:17 编辑
突然想到这2个 我自己写代码时 对于类型转换时 用到过as 但是is却没用过,想知道两者间是否有联系,是否有区别!
作者:
siyuefeiyang
时间:
2014-3-27 22:58
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少执行一次兼容性检查,性能可能会高一点点。
作者:
cmcm2014
时间:
2014-3-27 23:15
siyuefeiyang 发表于 2014-3-27 22:58
is转换规则:
1. 检查对象类型的兼容性,并返回结果true(false);
2. 不会抛出异常;
非常详细,完全理解,谢谢·
作者:
心灵苦旅
时间:
2014-3-28 09:12
又长知识了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2