什么是C#中的委托
来源:百度知道 编辑:UC知道 时间:2024/05/27 01:50:18
请不要大段抄袭网上的原文,因为很多文章我也看了,并不好理解。
简单举个例子:
现在有一个需求,我想让一个方法去执行一个过程,但是这个过程又不确定到底是哪一个。那么这个时候,就可以给方法传递一个委托,这个委托就是一个方法。例如:
void A(EventHandler e);
这时e参数就是一个委托,在A的方法体中,就可以调用这个名称叫做e的委托(方法)
void A(EventHandler e)
{
e(arg, arg);//当然,如果这个方法有参数,也要为这个方法传递参数
}
当我们要执行的方法的实现不同时,就可以使用到委托。
委托是抽象的,如果是作为开发一般的小型项目,用处不大。如果你是开发用户控件,框架等,就要好好钻研钻研了。
给你个题目做做,如果你能做出来,那么你就能对委托以及事件有更深的了解了。
有窗体A,窗体B和窗体C(winform窗体),如何用事件和委托让鼠标在拖动窗体A的同时,窗体B和C也同时移动?
如果你学过C/C++,最简单的解释就是委托就是高级的函数指针。
用自然语言解释的话,委托就是端菜的。你去餐馆吃饭点菜都是点服务员的,看上去服务员什么都会做,实际都是服务员【委托】给厨师做把菜给你的。
也就是说委托有两种能力:
1.作为一个方法的符号,表示任何签名相同的方法,这个和C/C++是一样的。
2.异步能力。委托可以通过BeginInvoke异步执行,这是.NET特有的。
另外事件也是一种委托
举例说明:
最容易理解的就是自定义事件了
class ClassTest
{
public delegate void TestHandler(object sender, ExtTestArgs e);// 定义委托
public event TestHandler TestEvent;
public ClassTest()
{
th