在 Actionscript 中,您可以使用变量保存类类型的引用,然后使用 is
将类的实例与变量进行比较。例如:
var a:Foo = new Foo();
var type:Class = Foo;
if(a is type){ //this is true
//do something
}
你能在C#中做类似的事情吗?还是“is”关键字必须总是跟在一个类后面?
.NET 2010 beta 2 :已测试兼容框架4、3.5(“完整”框架版本而非“客户端配置文件”版本)
给定:
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)));
它也可以跟着一个接口名称。
数据类型是对象,因此在C#中以下两种方式都是有效的
if (value is String) ...
if (value is ExampleClass) ...