在C#中,“is”关键字必须后跟一个类吗?

时间:2010-01-11 05:41:17

标签: c# class

在Actionscript中,您可以让变量保存对类类型的引用,然后将类的实例与变量is进行比较。例如:

var a:Foo = new Foo();
var type:Class = Foo;

if(a is type){  //this is true
  //do something
}

你能用C#做类似的事吗?或者“is”关键字是否必须后跟一个类?

4 个答案:

答案 0 :(得分:10)

如果要针对变量类型进行测试,请参阅.NET框架中的Type.IsInstanceOfType方法

答案 1 :(得分:1)

也可以跟接口名称。

答案 2 :(得分:1)

.NET 2010 beta 2:针对FrameWork 4,3.5(“完整”FrameWork版本,而不是“Client Profile”版本)进行测试

鉴于:

public class Foo
{
    public Foo() {}
}

运行时执行:

Foo myFoo = new Foo();

Console.WriteLine(myFoo is Foo);

Console.WriteLine(typeof(Foo).IsInstanceOfType(myFoo));

Console.WriteLine语句都将“True”打印到控制台窗口。

为什么你认为这会在控制台窗口打印'False:

Console.WriteLine(myFoo.GetType().IsInstanceOfType(typeof(Foo)));

答案 3 :(得分:0)

数据类型是对象,因此以下两个在C#

中都有效
if (value is String) ...

if (value is ExampleClass) ...