c# -- is和as运算符
一、is运算符用于判断一个对象是否可以转换为指定的类型,不会抛出异常,返回bool值用来表示是否转换成功: if ( myObj is MyClass ) { //do... } 当满足以下任意一种情况时转换成功: 1.转换对象是目标类型的实例; 2.转换对象是派生自目标类型的类型的实例; 3.转换对象是实现目标接口的类型的实例; 在C#7.0以上版本中支持is模式匹配表达式和switch模式匹配表达式; 二、as运算符与强制转换类似,但不会抛出异常,如果转换不成功,会返回null,通常搭配判空操作一起使用: MyClass myObj = obj as MyClass ; if ( myObj != null ) { //do... } 1.as运算符仅可以用于目标类型为引用类型或可空类型的类型转换操作,在转换时一般不会创建新的对象(如果原对象为值类型且目标类型为引用类型,转换成功时则会产生装箱操作,产生新对象);对于目标类型为非可空类型的值类型,可以使用is运算符配合强制转换进行转换: if ( myObj is int ) { int myNum = ( int ) myObj ; //do... } ※在泛型中,如果需要使用as运算符将对象转换为类型参数的类型,需要添加基类约束或类类型的约束: where T : BaseClass /