首页 > 代码库 > C# Keywords - is

C# Keywords - is

 记录一下在日常开发过程中遇到的一些C# 基础编程的知识!希望以后能用的着。知识是在平常的开发过程中去学到的。只有用到了,你才能深入的理解它,并用好它。

 本资料来源于:MSND下面是一些相关的code 和 说明

 C# is 关键字: 检查对象是否与给定类型相互兼容。 

 

  C# Keywords - is 的使用

例如,下面的代码可以确定 obj对象是否为 MyObject 类型的一个实例,或者obj对象是否为从 MyObject 派生的一个类型:

 
 这里有三种情况:
1、obj 对象就是指定类型的实例。 所以表达式是true
2、obj 对象是指定类型的基类,也就是MyObject : obj    表达式为 true
3、obj 对象与指定类型不兼容,那么表达式返回的是false.
if (obj is MyObject){}

详细说明:

如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。

如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。

不能重载 is 运算符。

请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。 不考虑其他转换,如用户定义的转换。

在 is 运算符的左侧不允许使用匿名方法。 lambda 表达式属于例外。

   示例:

class Class1 {}class Class2 {}class Class3 : Class2 { }class IsTest{    static void Test(object o)    {        Class1 a;        Class2 b;        if (o is Class1)        {            Console.WriteLine("o is Class1");            a = (Class1)o;            // Do something with "a."        }        else if (o is Class2)        {            Console.WriteLine("o is Class2");            b = (Class2)o;            // Do something with "b."        }        else        {            Console.WriteLine("o is neither Class1 nor Class2.");        }    }    static void Main()    {        Class1 c1 = new Class1();        Class2 c2 = new Class2();        Class3 c3 = new Class3();        Test(c1);        Test(c2);        Test(c3);  // 因为class3 继承class2 ,或这么理解: class2 是class3的基类。 在用is 关键字的时候。它会返回true.        Test("a string");    }}/*Output:o is Class1o is Class2o is Class2o is neither Class1 nor Class2.*/

 

C# Keywords - is