本节主要介绍类型转换方面知识!
1、任何类型都可以安全地转换为其基类类型,可以由隐式转换来完成;
2、任何类型转换为其派生类型时,必须进行显式转换;
3、值类型和引用类型的转换机制称为装箱(boxing)和拆箱(unboxing);
Ⅰ、IS模式
a.检查对象类型的兼容性,并返回结果:true或者false; b.不会抛出异常; c.如果对象为null,则返回值永远为false。 ex:
string a = "hello world!"; if (a is XX) { XX b = (XX)a; }
Ⅱ、AS模式
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用于类型转型。