加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

这是C#声明相当于delphi“class”(类的类型)?

发布时间:2020-12-15 17:36:49 所属栏目:百科 来源:网络整理
导读:在delphi中,我可以这样声明一个类的类 type TFooClass = class of TFoo; TFoo=class end; 这个声明的C#相当于哪个? 解决方法 C#中最接近的是Type类型,它包含有关类型的元数据. public class A { }public static int Main(string[] args){ Type b = typeof(A
在delphi中,我可以这样声明一个类的类
type
  TFooClass = class of TFoo;
  TFoo=class
  end;

这个声明的C#相当于哪个?

解决方法

C#中最接近的是Type类型,它包含有关类型的元数据.
public class A { }
public static int Main(string[] args)
{
  Type b = typeof(A);
}

这不完全一样.在Delphi中,“othertype的类型”本身就是一个可以分配给变量的类型.在C#中,“typetype”是一个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#中你不能这样做您不能从碰巧持有typeof(A)的类型的实例调用类型A的静态方法,也不能定义一个只能保存typeof(A)或派生类型的变量.

(Delphi元类类型使用的一些特定模式可以使用泛型:

public class A { }
public class ListOfA<T> where T: A { }

在这种情况下,T是“类型A”或任何派生类A用于构造类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读