龙空技术网

从零开始自学C#基础的第三十四天——委托和事件

白神妖泽 1300

前言:

眼前看官们对“委托调用方法有哪几种”大约比较看重,咱们都需要了解一些“委托调用方法有哪几种”的相关文章。那么小编同时在网摘上汇集了一些关于“委托调用方法有哪几种””的相关知识,希望兄弟们能喜欢,咱们一起来学习一下吧!

一,开始学习

1,委托

委托的含义与现实生活中的含义类似,但如何去办及怎样来办就要靠被委托方自己来想办法,在具体技术上,就是定义了一个方法函数,但没有实现方法体的代码,然后依靠被委托的方法来实现。

委托的概念

它是一种特殊方法,它只是定义了方法名,并没有具体的方法体代码。一旦为委托分配了方法,委托将与该方法具有完全相同的行为,委托方法的调用可以像其他任何方法一样,具有参数和返回值。

特点:

类似于C函数指针,但它们是类型安全;允许将方法作为参数进行传递;可用于定义回调方法;可以链接在一起;方法不必与委托签名完全匹配。

用delegate来声明委托方法,该委托不返回任何数据,传递的参数是字符串类型。

声明委托:

用delegate来声明委托,单一方法和多种方法的委托的声明是一样的。使用new运算符来创建一个委托的方法。使用“+”和“-”运算符实现多重委托。因为多个方法的委托实际上是数组结构,所以可以进行添加和删除的操作,当然,这种操作已经被 C#重载了,专门用来操作委托。删除一个委托,用Delegate.Remove方法来删除,这个方法有两个参数,一个是现有的委托(要包含要删除的委托),一个是要删除的委托。可以使用“-”删除委托。

2,调用单一委托:

当实现委托的时候,封装的多个方法将逐一按照顺序调用,如果有参数,则提供参数。

定义并使用单一委托,具体功能是传递一个字符串并返回一个字符串。

后面指定了类DelegateDemo的静态方法作为委托方法,而不是通过创建的类的实例。

多重委托:

多重委托可以把多个委托进行组合或者删除。

这里创建两个单一委托,然后创建多重委托。

委托作为参数传递:

委托也是对象,可以作为参数传递给方法。这种传递是通过引用来传递的(类似C语言的指针)。

委托对象实现平方运算和立方运算,该运算的具体实现通过SquareMe和CubeMe方法来实现。

ShowResult方法有一个委托参数,使用new DelegateAbc来创建一个委托实例,并作为参数传递,传递的值是被委托的方法的返回值。

3,事件

任何事物都会有一些事件发生,程序也是一样的,可能有外部其他程序引发的事件,事件是类在发生其关注的事情时用来提供通知的一种方式。

特点:

事件是类用来通知对象需要执行某种操作的方式;尽管事件在其他时候(如信号状态更改)也很有用,事件还是在图形用户界面中使用得比较广泛;事件通常使用委托事件处理程序程序进行声明;事件可以调用匿名方法来代替委托方法。事件经常与委托一起使用,通过委托方法,把事件处理委托给相应的方法函数。

事件的实现:

例如,把0到100的整数中能够被7整除的数输出,把遇到被7整除的数看做一个事件,并委托一个方法来显示结果。event关键字,用来声明一个事件。

在代码前面定义了委托方法,委托中定义了发送到事件处理程序的参数,这样,任何类都有处理事件的方法,第一个参数是一个object类型的参数,用来接收方法函数;第二个参数是一个系统事件对象。系统事件EventArgs是与事件相关的基类,使用它来发送事件消息到处理程序。

二,小结

1,委托是一种特殊方法,它只是定义了方法名,并没有具体的方法体代码。

2,任何事物都会有一些事件发生,程序也是一样的,可能有外部其他程序引发的事件,事件是类在发生其关注的事情时用来提供通知的一种方式。

标签: #委托调用方法有哪几种