1 在C#中什么是委托?

    它是C#中一种新的类型,它的作用相当于C语言中的函数指针,但与函数指针相比,委托是类型安全的并且是完全面向对象的。

    通过委托可以间接的调用一个方法(实例方法或静态方法都可以的)。委托包含对方法的引用,使用委托可以在运行时动态的设定要调用的方法,执行或调用委托,意味着执行该委托指向(引用)的方法。

    委托指向的方法必须和委托具有相同的方法签名,即委托的参数数量、数据类型和顺序、返回值必须都要一致。

2 委托的定义和调用

例如: (指向的是静态方法)

C#中的委托总结_委托 匿名方法

注意:

实例化委托是将委托指向或引用某个方法,也就是必须要讲某一个方法作为参数传递委托的构造方法。

如果此处这样写:

C#中的委托总结_委托 匿名方法_02

就会报错,因为并没有将委托指向某一个方法。

例如2:(指向实例方法)

C#中的委托总结_委托 匿名方法_03

3 匿名方法

    要想使用委托,委托所指向的方法必须存在。但在C#2.0中使用委托还有另一种方式:匿名方法。

    匿名方法:就是没有名字的方法,和javascript中比较类似,就是不需要定义委托要指向(引用)的方法,而是把要引用的方法的方法体直接作为参数传递给

委托的构造方法。

例如:

不使用匿名方法的代码:

C#中的委托总结_委托 匿名方法_04

使用匿名方法的代码:

C#中的委托总结_委托 匿名方法_05

所以:匿名方法就是把委托要引用的方法的方法体直接放在实例化委托时的后面或者构造方法里作为一个参数,用户不用指定匿名方法的返回值类型,返回值类型由return语句决定,

并必须和定义委托时的返回类型一致。