C#中的IS与AS运算符

IS运算符

C#中的“ is”运算符检查对象的运行时类型是否与给定类型兼容。

以下是语法-

expr is type

在这里,expr是表达式

type类型的名称

下面的示例显示了C#&minis;中is运算符的用法。

示例

using System;

class One { }
class Two { }

public class Demo {
   public static void Test(object obj) {
      One x;
      Two y;

      if (obj is One) {
         Console.WriteLine("Class One");
         x = (One)obj;
      } else if (obj is Two) {
         Console.WriteLine("Class Two");
         y = (Two)obj;
      } else {
         Console.WriteLine("没有课程!");
      }
   }

   public static void Main() {
      One o1 = new One();
      Two t1 = new Two();
      Test(o1);
      Test(t1);
      Test("str");
      Console.ReadKey();
   }
}

输出结果

Class One
Class Two
没有课程!

AS运算符

“ as”运算符在兼容类型之间执行转换。就像强制转换操作一样,它仅执行引用转换,可为空的转换和装箱转换。as运算符不能执行其他转换,例如用户定义的转换,而应使用强制转换表达式来执行。

以下是显示在C#中使用as操作的示例。这里用作转换-

string s = obj[i] as string;

尝试运行以下代码以在C#中与'as'运算符配合使用-

示例

using System;

public class Demo {
   public static void Main() {
      object[] obj = new object[2];
      obj[0] = "jack";
      obj[1] = 32;

      for (int i = 0; i < obj.Length; ++i) {
         string s = obj[i] as string;
         Console.Write("{0}: ", i);
         if (s != null)
         Console.WriteLine("'" + s + "'");
         else
         Console.WriteLine("这不是字符串!");
      }
      Console.ReadKey();
   }
}

输出结果

0: 'jack'
1: 这不是字符串!