什么是C#中的委托

来源:百度知道 编辑:UC知道 时间:2024/05/27 01:50:18
什么是C#中的委托? 请根据您的经验举一个简单的例子来说明,为什么在这个情况下必须要用委托,而其他办法不能替代。及委托带来的好处,谢谢!

请不要大段抄袭网上的原文,因为很多文章我也看了,并不好理解。

简单举个例子:

现在有一个需求,我想让一个方法去执行一个过程,但是这个过程又不确定到底是哪一个。那么这个时候,就可以给方法传递一个委托,这个委托就是一个方法。例如:

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