委托和事件

委托的基本知识

委托是 c# 当中类似于函数指针,但是类型安全。

C# 中使用委托:

首先声明委托类型:

Public delegate void Mydelegate(int ms);

和函数的声明是一样的,和函数具有相同的参数和返回值,名称不一样,并且前面加有 delegate 关键字。

创建该委托的一个或者多个实例。

Public void MyProc(int ns);

Mydelegate dlg = new Mydelegate(MyProc);

这样我们举完成了委托的定义和实例化。

 

 

委托的匿名方法:

我们的委托的方法可以是不先定义好的,可以直接定义例如:

 

Delegate string delegateTest(string val);

Static void main()

{

       String mid=”,Middle part!”;

       delegateTest  anonDel = delegate(string param)

{    

       Param+=mid;

       Param+=” and this was added to the string .”;

       Return param;

              }    

 

              Console.writeline(anonDel(“Start of string ”));

      

}

 

这样就可以节约代码量!

但是匿名委托需要遵守两个规则:

匿名方法中不能使用跳转语句跳到匿名方法的外部,反之依然,匿名方法的外部也不能跳转到该匿名方法的内部!

 

 

 

 

 

 

多播委托:

       前面介绍的委托都只是包含一个方法调用,调用的次数和调用的方法的次数相同,如果有多个方法就需要多次地显示调用这个委托。委托也可以包含多个方法,这种委托就是多委托。如果需要调用多委托,就可以按顺序调用多个方法。为此这种委托的返回值必须是 void ;否则就只能得到委托调用的最后一个方法的结果!

示例:

Delegate void DoubleOp(double value);

Class MainEntryPoint

{

       Static void main()

{

       DoubleOp operations=new DoubleOp(MathOperations.MultiplayByTwo);

       Operations+=new DoubleOp(MathOperations.Square);

}

}

 

使用委托可以编写上面的代码,下面的也就很好理解了:

DoubleOp operations = MathOperations.MultiplyByTwo;

Operations += MathOperations.Square;

多播委托还可以识别“ - ”“ -= ”+””+=” 的等运算符,以便从委托中增加或者删除方法调用!

 

 

 

事件

         .Net 把消息封装成事件。一个常见的例子就是用户单击了窗体的按钮后, windows 就会给按钮消息处理函数( windows 过程或者 WndProc )函数发送一个 WM_MOUSECLICK 消息,对于 .Net 来说这样的就是一个 Click 事件!

在基于对象的应用程序的时,需要使用另外一种对象通信的方式,而这个当中使用的就是委托。委托就是应用程序接受消息时封装事件的方式。 C# 设计的目的是让用户无须理解底层的委托,可以直接使用他们!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值