《你必须知道的.NET》--is和as(Ⅰ)

本节主要介绍类型转换方面知识!安全

一、任何类型均可以安全地转换为其基类类型,能够由隐式转换来完成;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

相关文章
相关标签/搜索