关于委托,可以这么理解,平时我们在定义方法的时候, 传入的参数都只是简单类型和类类型或结构体,使用委托时, 我们可以将方法作为一种类型。
定义委托时,跟定义变量相似(只是跟定义变量类似,但这里并不是定义变量,而是定义一个类型,就像定义一个自定义类,只是它的定义方式更像定义变量),首先我们需要访问级别(public、internal、private...),然后就是变量类型delegate,如果是其他变量,后面紧跟着的当然是变量名,但因为委托实际上是定义了一个方法类型,所以作为一个方法,其必需的就是返回类型,方法名和参数列表,所以以下是委托的定义格式:
访问级别 变量类型(delegate) 返回类型 方法名(参数列表);
eg: public delegate double Calculate(double a, double b);
经过上面的委托定义, 我们就可以将Add作为一个类型。假如我么有如下的类:- public class Calc
- {
- public double Add(double x, double y)
- {
- return x + y;
- }
- public double Sub(double x, double y)
- {
- return x - y;
- }
- public double Div(double x, double y)
- {
- return x * y;
- }
- public double Mul(double x, double y)
- {
- if (y == 0)
- {
- throw new Exception("除数不能为零");
- }
- return x / y;
- }
- }
复制代码 当你执行下面的代码,就代表你执行了Calc的Add方法,并返回2- Calculate calc = new Calc().Add;
- calc(1, 1);
复制代码 对于事件,实际上就是对委托的一种封装,事件的一个特点是,只有对象本身才可以触发事件。
顺求技术分,10期要开了, 正在抓紧写博客和拿技术分{:soso_e149:} |