Delphi 方法类型

在越写越多,越写越复杂的代码过程中

越来越经常看到如下写法

TOnCreateJobThreadEvent = function: TJobWorkerThread of object;
TOnProcessJobEvent = procedure( FClientContext: TDIClientContext;
                                FJobWorkerThread: TJobWorkerThread;
                                FSignEvnet: Integer ) of object;

 

说实在的,我很晕,真的

我们过去写函数,写方法都是如下写法

 

procedure MyProc();

begin

end;

 

function MyFunc():boolean;

begin

end;

 

可上面在前面竟然加了一个TXXX,而在Delphi定义里面,我们知道以T开头的大部分为类声明

 

这个该死的四不像到底是什么东西,我要如何理解

问了很多人,都是知道他是怎么回事,但是解释不清楚,我日日日!

于是我晕到今天,今天实在气不过,搜索delphi of object

竟然让我真的找到答案了,原来这种写法叫方法类型,为一种特殊的类型,可当变量使用

以前我们知道的类型都是如下定义

Type

  TMyTest = class

  x:integer;

end;

这种通常可称为结构类型,而以下这种则称为方法类型

TOnProcessJobEvent = procedure( FClientContext: TDIClientContext;
                                FJobWorkerThread: TJobWorkerThread;
                                FSignEvnet: Integer ) of object;

意思大概可理解为,TOnProcessJobEvent该类型指向一个方法,前提是你的参数应该相同,跟重载不同

----------------------------------------------------------------

举个例子(http://topic.csdn.net/t/20060912/09/5015133.html)

procedure   TForm1.BBB(I:   Integer);
begin
    showmessage( 'BBB: '   +   IntToStr(I));
end;


procedure   TForm1.CCC(I:   Integer);
begin
    showmessage( 'CCC: '   +   IntToStr(I));
end;


procedure   TForm1.Button1Click(Sender:   TObject);
type
    Taaa   =   procedure   (i:integer)   of   object   ;//方法类型
var
    ap:   Taaa;
begin
    ap   :=   BBB;
    ap(1);
    ap   :=   CCC;
    ap(2);
end;

--------------------------------------------------------------

方法类型,也就是一种类型,蛮特殊的。。。可以当变量来用...
楼上的例子应该讲得非常的清楚了...我加点注释吧...呵呵
procedure   TForm1.Button1Click(Sender:   TObject);
    type
        Taaa   =   procedure   (i:integer)   of   object   ;
var
    ap:   Taaa;
begin
    ap   :=   BBB;   //这里把BBB这个方法赋给ap这个变量,注意BBB与ap的声明原型要一样,不然会有错的。。。
    ap(1);   //这里实际调用的就是BBB了。。。
end;

转载于:https://www.cnblogs.com/sudigua2010/archive/2012/04/06/2434805.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值