c#类型转换操作符:as和is

  显式的转换可能会抛出异常,而异常的代价在运行时是高昂的。C#有两个操作符(as和is)可以解决这个问题,它们都保证不抛出异常。

  is:表示是否能将一个给定的表达式转换为给定的类型,这种转换可能是引用转换,也可能是装箱或拆箱操作,其结果为布尔型。

    例: string strName="Davi";

      Console.WriteLine("strName {0} string", strName is String? "is","isnot");  //结果为:strName  is  String

      Console.WriteLine("strName {0} object", strName is Object ? "is","isnot");  //结果为:strName  is  object

    注:is不考虑任何基于用户自定义类型的转换。

  as:类似于is操作符,但它会返回一个目标类型的引用。as在不能做转换时返回null。

     例: MyType myObj1=new MyType();

       MyBaseType baseOjb1=new MyBaseType();

       MyBaseType baseOjb2=myObj;

      

       MyType myObj2=baseOjb2 as MyType;  //成功转换为MyType

       myObj2=baseOjb1 as MyType;  //失败,myObj2=null

       

  小结:如果需要测试一个变量是否为某种类型,用is 。

     如果要将一个变量转换为某种类型,用as 。如果用is的话,需要进行两次类型查找操作(先判断,再转换),而as只需要一次。

  

静守己心,看淡浮华
原文地址:https://www.cnblogs.com/jianglingli83/p/3009276.html