第一、委托定义是用关键字delegate来修饰的,它是定义了方法的类型,总之委托是一种类型,只是一种专门针对方法的类型。
定义了委托实际上是定义了一个签名,这里的签名指的是(方法的返回值,以及参数类型、个数。和方法名称没有关系),
和委托类型的签名相同的方法都是属于这种委托类型的。例如上面的:
void EnglishGreeting(String name) 和 void ChineseGreeting(String name) 都是属于GreetingDelegate这种委托类型的
因为返回值都相同,参数都是一个string类型的。
第二、定义委托和定义类是一样的,类在哪里定义的,那么委托也可以再哪里定义。
上面的private void GreePeople(string name , GreetingDelegate MakeGreeting) 一个参数为GreetingDelegate的委托类型。
通过观察知道EnglishGreeting这个方法时属于这种委托类型的,因为他的签和委托是一样的,那么它就可以作为参数传进去。
这样就实现了动态调用一个方法。、
上面演示了“如何作为参数传进去,如何调用的”,只要把方法名传进去就可以了
第三:委托链:可以将多个方法加载到同一个委托对象上
委托是一种类型,那么类能可以通过new方法new出来,那么委托也可以通过new方法new出来。但是委托的new方法
不包含0个参数的构造函数,必须要带有参数。
委托类型的实例又有什么用呢?比如上面的EnglishGreeting方法,委托给委托对象了,那么这个委托对象就代表了我这个方法。
并且中间还可以赋值,例如上面delefgatel这个委托对象重新代表了ChineseGreeting方法的委托。
可以给委托对象追加方法,这样就代表了多个方法,这样的这个委托对象就可以依次执行这个委托对象里的方法。
形成委托链,这样主要能实现批处理。。。这点很重要。(委托链也是一个委托对象)
那么如何调用委托对象呢?委托对象代表的方法怎么用,那么我这个委托就是怎么用的····
例如上面的delegatel(“Peng哥”)