在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
摘自CLR via C#第三版第四章 在c#中is可以用来判断一个对象是否兼容给定的类型,如果是返回true,否则返回false。 同时is是永不会抛出异常的。如果对象引用是null,is操作符总是返回false。 Object o = new Object(); Boolean b1 = (o is Object); //返回true Boolean b1 = (o is Employee); //返回false 一般is操作符的使用方式如下 //先进行判断 if( o is Employee){ Employee e = (Employee) o; ..... } 在该过程中CLR实际会检查两次对象类型,首先is操作符检查o是否兼容Employee,如果是在if内部 CLR会再次核实o是否引用一个Employee。这会对性能造成一定影响。这是因为CLR首先必须判断o引用的 对象实际的类型,然后遍历继承层次结构,用每个基类型去核对。 C#提供了as操作符来简化这种代码的写法,来提高性能。 Employee e = o as Employee; if(e !==null){ } 如果o兼容于Employee,as会返回同一个对象的非null引用。如果不兼容,会返回null。as操作符CLR只会校验一次对象的类型。 同时它也永远不会抛出异常,所以要检查生成的引用是否为null。 |
请发表评论