你的位置:首页 > ASP.net教程

[ASP.net教程]C#的委托


之前本人一直在写一些相对比较基础的C#代码,现在做了一段时间项目了,遇到更麻烦的问题,比如今天要讨论的委托和事件,这个算是C#进阶篇的内容吧。现在自己就把这些天所学习的和自己所理解的和大家分享。有错请指正。

委托

顾名思义,委托就类似于中介,你建立它后,它一直在那儿,然后你可以让它去做不同的事,本质来说委托就是一个用来做事的工具。但是需要注意的是不是所有的事都能让委托去做,这些事要有相同的特征,比如和委托有相同的参数。好啦,咱们还是Demo说话吧

新建一个控制台项目

image

然后我们首先在项目定义一个委托,其实委托也算得上是一个类,属于引用类型(iint 等属于值类型,存储空间为堆栈,引用类型存储空间为堆),所以我们处理委托的时候可以直接把它像类一样处理,只是声明的时候不同的一点就是,要写出参数。

image

接着我们新建一个方法,这个方法就是我们需要这个委托,也就是这个中介去做的事。注意我们要让这个方法的参数类型和个数与委托一致,因为你不能让一个卖房子的中介去帮你干买车的事,对吧!

image

最后我们就来用委托吧,前面我有说过委托几乎类似一个类,我们要使用委托就得实例化了,并且我们这个时候得告诉它我们需要这个中介做什么事了。

image

注意一下此时传的参数是方法,而不是平时的什么int double类型。这也是委托的精髓所在。然后可以看到代码里面我随后就使用了委托,给handler传入了一个

int类型的参数,因为我们之前定义委托的时候就指定了需要一个参数,类型为int。

现在咱们来看看最后输出的结果吧,验证一下!!!

image


现在我们算是了解了最基础的委托,接着我们还是来看看多路广播委托,其实也就是让这个中介一次帮我们做多个事情。要是不能一次做多个事,我们要这个中介干嘛,还不如自己直接把这件事做了。

我们先添加两个事情吧。

image

我们现在再告诉中介也要做这两件事

image

我们用+=的方式来给他添加需要做的事,这个时候委托的内部有一个链表,可以不断地添加和删除要做的事(删除为-=),类似于list的操作。

现在我们来看一下运行结果吧

image

现在我们来总结一下委托吧

委托主要分为三步:

一:定义一个委托

二:需要做的事情

三:把事情通过参数形式传给委托

 

最后就是使用委托啦!!!

 

PS:今天由于时间不多,只能暂时简单写写委托,大家要更深入了解委托更细节的东西的话,可以去园子里的其他博客看看,有很多优秀的帖子。

下次我也会接着和大家分享一下在委托的基础上,我对于事件的理解。