多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# is(C# 参考) 检查对象是否与给定类型兼容。例如,下面的代码可以确定对象是否为 **MyObject** 类型的一个实例,或者对象是否为从 **MyObject** 派生的一个类型: ``` 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); Test("a string"); } } /* Output: o is Class1 o is Class2 o is Class2 o is neither Class1 nor Class2. */ ``` ## C# 语言规范 有关详细信息,请参阅 [C# 语言规范](https://msdn.microsoft.com/zh-cn/library/ms228593.aspx)。该语言规范是 C# 语法和用法的权威资料。 ## 请参阅 [C# 参考](https://msdn.microsoft.com/zh-cn/library/618ayhy6.aspx) [C# 编程指南](https://msdn.microsoft.com/zh-cn/library/67ef8sbd.aspx) [C# 关键字](https://msdn.microsoft.com/zh-cn/library/x53a06bb.aspx) [typeof(C# 参考)](https://msdn.microsoft.com/zh-cn/library/58918ffs.aspx) [as(C# 参考)](https://msdn.microsoft.com/zh-cn/library/cscsdfbt.aspx) [运算符关键字(C# 参考)](https://msdn.microsoft.com/zh-cn/library/bewds7kc.aspx)