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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wyu621 中级黑马   /  2013-6-20 14:13  /  1128 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

c#中的 is 和 as有什么不同?

3 个回复

正序浏览

if(o is Employee) {
   Employee e = (Employee) o;// is 的用法
   //在if语句中使用e
}

Employee e = o as Employee; //as 的用法
if(e != null)
{
   //在if语句中使用e
}

反编译的话 其实 is 被 as 封装了,目的是为了让用户使用更舒适就如同第一种结构。
回复 使用道具 举报
is和as 使用都用在里氏转换上
is 的话   返回 true和flase
as 的话  返回 失败返回Null 成功直接赋值.
回复 使用道具 举报
本帖最后由 蔡志涛 于 2013-6-20 14:28 编辑

两者都是强制类型转换。
is检查一个对象是否兼容于指定的类型,并返回一个Boolean值:true或者fasle。注意,is操作符永远不会抛出异常,请看示例:
ClassA
{
....
}
Object o=new Object();
Boolean b1=(o is Object); //b1为true.
Boolean b2=(o is ClassA) ;// b2为false.
如果对象引用是null,is操作符总是返回false,因为没有可检查的其类型的对象。

as 运算符用于在兼容的引用类型之间执行某些类型的转换

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