本节主要介绍类型转换方面知识!安全
一、任何类型均可以安全地转换为其基类类型,能够由隐式转换来完成;spa
二、任何类型转换为其派生类型时,必须进行显式转换;code
三、值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing);对象
Ⅰ、IS模式blog
a.检查对象类型的兼容性,并返回结果:true或者false;
b.不会抛出异常;
c.若是对象为null,则返回值永远为false。
ex:
string a = "hello world!"; if (a is XX) { XX b = (XX)a; }
Ⅱ、AS模式string
a.检查对象类型的兼容性,并返回结果,若是不兼容就返回null;
b.不会抛出异常;
c.若是结果判断为空,则强制执行类型转换将抛出NullReferenceExcep异常;
d.as必须和引用类型一块儿使用。
ex:
object o = new object(); XX b = (XX)o; // 若是类型转换不成功,会抛出异常
对于上面的as操做,等效于下面的is操做:
XX b = o is XX ? (XX)o: null ;
实现的语法更加简明,且不会引起异常,在类型转换时值得推荐。
综上所述,as模式较is模式执行效率上更胜一筹,可是一般来讲,is用于进行类型判断,as用于类型转型。class