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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wenbolwm 黑马帝   /  2012-3-18 15:12  /  1930 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

请问下,在.net 中的 as 和 is的作用和区别。谢谢。

评分

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

查看全部评分

4 个回复

倒序浏览
shilvyanfgq 发表于 2012-3-18 15:53
is 和 as 操作符是用来进行强制类型转换的

is : 检查一个对象是否兼容于其他指定的类型,并返回一个Bool值, ...

try
{
     object o = new object();
     Label lb = (Label)o;
}
catch()
{
       Response.Write("类型转换失败");
}

以上和as相比 哪个更快一点?

评分

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

查看全部评分

回复 使用道具 举报

总结可以概况为:

1、is是运算符,用于检查对象是否与给定类型兼容,is只做兼容判断,并不执行真正的类型转换
  语法:<引用变量名> is [类名]
如:
int i=100;
if(i is int32)
ConsoleWriteLine("i is a Int32");
else
ConsoleWriteLine("i is not  a Int32");
2、as运算符用于执行引用类型的显示类型转换,类型必须为引用类型或null。
语法:语法:<引用变量名> as [类名]
如:
object MyObj="Hello";
string MyString=MyObj as string;//myString="Hello"
注:使用as运算符执行类型转换时,不需要使用is运算符测试类型后再执行转换,它支持安全的类型转换。
   as的规则:
1、检查对象类型兼容性并进行类型转换,返回结果。如果不兼容就返回null
2、不会抛出异常

评分

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

查看全部评分

回复 使用道具 举报
is就是用于对类型的判断。返回true和false;
as类型相同就返回一个非空的引用,否则就返回一个空引用;

评分

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

查看全部评分

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