检查对象是否与给定类型兼容。例如,可以确定对象是否与 string 类型兼容,如下所示:
if (obj is string) { }
如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true。
如果已知表达式将始终是 true 或始终是 false,则 is 关键字将导致编译时警告,但是,通常在运行时才计算类型兼容性。
不能重载 is 运算符。
请注意,is 运算符只考虑引用转换、装箱转换和取消装箱转换。不考虑其他转换,如用户定义的转换。
// cs_keyword_is.cs
// The is operator.
using System;
class Class1
{
}
class 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();
Test(c1);
Test(c2);
Test( " a string " );
}
}
结果:
o is Class1 o is Class2 o is neither Class1 nor Class2.