Delphi函数指针的两种定义

 

delphi中经常见到以下两种定义

 

Type

         TMouseProc = procedure (X,Y:integer);

         TMouseEvent = procedure (X,Y:integer) of Object;

 

两者样子差不多但实际意义却不一样,

TMouseProc只是单一的函数指针类型;

TMouseEvent是对象的函数指针,也就是对象/类的函数/方法

区别在于类方法存在一个隐藏参数self,也就是说两者形参不一样,所以不能相互转换

这也就是为什么delphi中可以这样赋值 button1.onClick:=button2.onClick;

却不能这样赋值 button1.οnclick=buttonclick; (buttonclick为本地函数,button2.onclick为类方法)

的原因!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章