现在的位置: 首页 > 综合 > 正文

委托和事件

2018年04月05日 ⁄ 综合 ⁄ 共 1380字 ⁄ 字号 评论关闭



委托的基本知识

委托是
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#
设计的目的是让用户无须理解底层的委托,可以直接使用他们!

 

抱歉!评论已关闭.