delphi中有TClass = class of TObject,
请问这个定义有什么用处?最好详细些

解决方案 »

  1.   

    看看这个就明白同样的问题
    http://community.csdn.net/Expert/topic/4921/4921458.xml?temp=.7612268
      

  2.   

    这是一个称为类类型的声明,通常用在用一个基类来创建不同子类的地方,
    同样,你也可以写
    TControlClass = class of TControl;
    var
     classtype : TControlClass;
    begin
     classtype := TWinControl;
     classtype.Create(nil);
     classtype := TForm;
     classtype.Create(nil);
    end;尤其是,你试图写一个对象创建工厂类的时候,如
    function GetControl(ClassType: TControlClass): TControl;
    begin
      Result := ClassType.Create(nil);
    end;
    你可以在任何地方使用
    GetControl(TForm); GetControl(TDbGrid)等等
    另外,该类型还可以得到类的一些基本信息等,看delphi的帮助会讲解得很详细的. 
      

  3.   

    这是一个 class-referrence type.
    其实,类引用有很多用处
    比如:在一个function中你不知道将来会创建一个TButton还是TEdit等等对象,但他们都是TControl的子类就可以有如下代码:
    TControlClass = class of TControl;
    function CreateMyControl(mycontrol: TControlClass);
    var
      l_control: TControl;
    begin
      l_control := mycontrol.create;
      l_control.left := 100;
      l_control.top := 20;
    end;然后,你可以这样来调用:
    CreateMyControl(TEdit);
    CreateMyControl(TButton);如果function CreateMyControl(myControl: TControlClass);
    改成function CreateMyControl(myControl: TControl);
    那么只能传入(TControl);
    只能这样调用 CreateMyControl(TControl);
    而无法CreateMyControl(TEdit);其实实现了类的多态性,使得类创建更加灵活。