在delphi中,我可以像这样声明一个类的类
type
TFooClass = class of TFoo;
TFoo=class
end;
这个声明的C#等价物是什么?
答案 0 :(得分:14)
C#中最接近的是Type
类型,其中包含有关类型的元数据。
public class A { }
public static int Main(string[] args)
{
Type b = typeof(A);
}
不完全相同。在Delphi中,“othertype类型”本身就是一种可以分配给变量的类型。在C#中,“othertype类型”是System.Type
实例,可以分配给System.Type
类型的任何变量。
例如,在Delphi中,您可以这样做:
type
TAClass = class of TA;
TA = class
public
class procedure DoSomething;
end;
var x : TAClass;
begin
x := TA;
x.DoSomething();
end;
你不能在C#中做这样的事情;你不能从碰巧持有Type
的{{1}}实例调用类型A的静态方法,也不能定义一个只能 持有typeof(A)
或派生的变量类型。
(Delphi元类类型的一些特定模式可以使用泛型完成:
typeof(A)
在这种情况下,T是“A的类型”或A用于构造类的任何派生类。)