黑马程序员技术交流社区
标题: 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 |