• class helper 可能是从 Delphi 2007 增加的新语法


    class helper 可能是从 Delphi 2007 增加的新语法, 因为感觉不太实用, 直到今天才测试了一下.

    试过之后才知道: 挺有意思的! 基本功能就是修改已存在的类.

    Txxx = class helper for T... {T... 表示已存在的类} {可以替换已存在的方法} {也可以有新的方法、成员}end;
    //这之后再使用 T... 类及其子孙类时, 都会优先使用 Txxx 的修改.

    例一:

    unit Unit1;
    interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
    type TForm1 = class(TForm) Button1: TButton;
     procedure Button1Click(Sender: TObject);
     end;
     TMyClass = class function func1: string;
     function func2: string;
     end;
     TMyClassHelper = class helper for TMyClass function func1: string;
     {将把 TMyClass 的同名方法替换掉} function func3: string;
     {将为 TMyClass 及其子类增加这个方法} end;
    var Form1: TForm1;
    implementation{$R *.dfm}{ TMyClass }function TMyClass.func1: string;
    begin Result := 'TMyClass.func1';
    end;
    function TMyClass.func2: string;
    begin Result := 'TMyClass.func2';
    end;
    { TMyClassHelper }function TMyClassHelper.func1: string;
    begin Result := 'TMyClassHelper.func1';
    end;
    function TMyClassHelper.func3: string;
    begin Result := 'TMyClassHelper.func3';
    end;
    //测试procedure TForm1.Button1Click(Sender: TObject);
    var obj: TMyClass;
    begin obj := TMyClass.Create;
     ShowMessage(obj.func1);
     {TMyClassHelper.func1} ShowMessage(obj.func2);
     {TMyClass.func2} 

    http://blog.csdn.net/qdseashore/article/details/7757197

  • 相关阅读:
    QQ 2006 正式版协议变动情况分析
    开源3D方面的软件
    要使silverlight能够在IIS中顺利运行,需要设置的东西.
    文本框回车自动提交
    No installed Service named "Apache2"
    Javascript:三个函数ceil()、floor()、round()的区别
    基于Apache的Svn服务器配置
    下载:HD AUDIO For XP SP3修正补丁
    ViewState在执行Refresh后丢失
    C#关闭应用程序时如何关闭子线程
  • 原文地址:https://www.cnblogs.com/findumars/p/8207416.html
Copyright © 2020-2023  润新知