C#的委托与Delphi中的"事件委托"

转载 2007年10月12日 15:51:00

C# in .Net Framework
        .Net Framework中,要传递方法,必须把方法细节包装在一种新类型的对象中,即委托.委托只是一种特殊的对象类型,其特殊之外在于,我们以前定义的所有对象都是包含数据,而委托包含的只是方法的细节.
        委托是一个类,所以其使用同类一样,需要两阶段.声明(定义)委托,创建委托一个或多个实例.
        声明委托语法

        delegate void Operation(unit x);

(定义的这个委托代表方法没有返回值,且有一个unit参数.
        delphi中  

TNotifyEvent = procedure(Sender: TObject) of object;

   在delphi下实现回调的例子

 1 {
 2 使用委托,将方法做为别一个方法的参数传递的例子(回调)
 3 }
 4 unit Unit1;
 5 
 6 interface
 7 
 8 uses
 9   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
10   Dialogs, StdCtrls;
11 
12 type
13   TDelegateClass=procedure(msg:string) of object;//定义一个委托
14   TDelegateClassArray=array[0..1] of TDelegateClass;
15   TForm1 = class(TForm)
16     Button1: TButton;
17     Button2: TButton;
18     procedure Button1Click(Sender: TObject);
19     procedure Button2Click(Sender: TObject);
20   private
21     { Private declarations }
22     procedure UserMethod(msg:string);//委托指定的用户自定义方法
23     procedure UserMethod2(msg:string);//委托指定的用户自定义方法2    
24     procedure doDelegate(Delegate:TDelegateClass;msg:string);//如果委托实例存在,就执行委托
25   public
26     { Public declarations }
27   end;
28 
29 var
30   Form1: TForm1;
31 
32 implementation
33 
34 {$R *.dfm}
35 
36 { TForm1 }
37 
38 procedure TForm1.doDelegate(Delegate:TDelegateClass;msg:string);
39 begin
40   if Assigned(Delegate) then
41   Delegate(msg);
42 end;
43 
44 procedure TForm1.Button1Click(Sender: TObject);
45 begin
46   doDelegate(UserMethod,'test');//调用委托处理程序,显示test信息
47 end;
48 
49 procedure TForm1.UserMethod(msg: string);
50 begin
51   showmessage(msg);
52 end;
53 
54 procedure TForm1.Button2Click(Sender: TObject);
55 var
56   test:TDelegateClassArray;
57 begin
58   test[0]:=UserMethod;
59   test[1]:=UserMethod2;
60   doDelegate(test[0],'test');
61   doDelegate(test[1],'test');
62 end;
63 
64 procedure TForm1.UserMethod2(msg: string);
65 begin
66   showmessage('这是第二个方法');
67 end;
68 
69 end.

C#中的委托和事件

C#中的委托和事件   前言   委托和事件在.NET框架中应用的很广泛,但是楼主因为知识尚浅,用到的不多,但是听前辈们说,这个委托和事件就像两座大山,只要翻过了这...
  • shanyongxu
  • shanyongxu
  • 2016年02月25日 17:09
  • 1106

快速理解C#中的委托与事件

以下内容只是个人理解,仅供参考。 什么是委托? 先看最简单的委托例子: namespace DelegateTest { public delegate void MessageDele...
  • Wiiix
  • Wiiix
  • 2016年05月20日 20:02
  • 5320

Delphi接口委托的例子代码

  • 2017年05月31日 13:02
  • 52KB
  • 下载

Delphi 委托实现的简例

委托实现是Delphi提供接口技术后引入的功能,是指用另一个类或接口实现某个接口的方法在定义 一个类时,如果该类(如TDraw)实现一个接口(如:IDraw),那么该类必须实现接口中的所以方法。通过...
  • xiongmao000738
  • xiongmao000738
  • 2011年09月21日 15:33
  • 1193

[C#]委托和事件(详细讲解)

引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没...
  • s10141303
  • s10141303
  • 2014年03月02日 00:23
  • 4152

【C#】C#委托和事件的实例讲解

using System; namespace delegate_event { // 定义一个猫类 class Cat { // 定义一个名字字段 private string na...
  • sinat_20559947
  • sinat_20559947
  • 2015年07月22日 15:33
  • 3966

Delphi中的“委托”

 .NET中有委托(Delegate)的概念,其声明形式如下所示:   public delegate void MyDelegate(int aIntParam, string aStringPar...
  • procedure1984
  • procedure1984
  • 2009年02月16日 17:26
  • 4040

Delphi 委托实现的简例

委托实现是Delphi提供接口技术后引入的功能,是指用另一个类或接口实现某个接口的方法在定义 一个类时,如果该类(如TDraw)实现一个接口(如:IDraw),那么该类必须实现接口中的所以方法。通过...
  • xiongmao000738
  • xiongmao000738
  • 2011年09月21日 15:33
  • 1193

浅谈事件委托和this的用法

浅谈事件委托和this用法详解事件委托 事件委托是一种由其它元素而非事件目标元素来响应事件产生的行为的思想。比如用ul元素来处理其子元素li的事件。有多种方法来处理事件委托。标准方法来源于原生浏览器...
  • hengs_dream
  • hengs_dream
  • 2016年07月30日 22:29
  • 1015

Unity3D 委托和事件的优点(一)

上周接触到了委托,这周终于在自己的项目中用到了,现在准备用委托和事件的方案替换掉之前的一些使用不足的解决方案!   在此感谢前辈们的优秀文章,我是根据在网上阅读的文章,通过自己的见解,并在自己的项目...
  • VioletTD
  • VioletTD
  • 2015年11月15日 12:37
  • 2216
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#的委托与Delphi中的"事件委托"
举报原因:
原因补充:

(最多只允许输入30个字)