黑马程序员技术交流社区

标题: c#中的 is 和 as有什么不同? [打印本页]

作者: wyu621    时间: 2013-6-20 14:13
标题: c#中的 is 和 as有什么不同?
c#中的 is 和 as有什么不同?

作者: 蔡志涛    时间: 2013-6-20 14:16
本帖最后由 蔡志涛 于 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 运算符用于在兼容的引用类型之间执行某些类型的转换


作者: 吴承烨    时间: 2013-6-20 14:22
is和as 使用都用在里氏转换上
is 的话   返回 true和flase
as 的话  返回 失败返回Null 成功直接赋值.
作者: 彭康    时间: 2013-6-20 14:34

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

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

反编译的话 其实 is 被 as 封装了,目的是为了让用户使用更舒适就如同第一种结构。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2