写给自各儿看的C#委托笔记
写给自己看的C#委托笔记
首先先套用一下书中对于委托的描述
什么是委托,法庭上律师为当事人辩护,他真正执行的是当事人的陈词,律师就相当于一个委托对象,而当事人则委托律师对象为自己辩护。
C#中的委托概念就好比律师对象,它是一个类(“委托是类类型”),因为只有类对象才有对象的概念。
C#中的委托可以理解为函数的一个包装,它可以使函数作为参数来传递,这在作用上相当于C++的函数指针。
委托的定义和方法的定义类似,只是在定义的前面加了一个关键词delegate:
public delegate void myDelegate(string name);
委托能包装的方法需要满足一定条件,就是要与委托返回类型相同,参数个数、顺序、类型相同,比如:
public void myMethod1(string myName);
public void myMethod2(string yourName);
了解了委托是什么之后,开始一个小例子来使用它
using System; namespace delegateHello { //语言委托 class People { //使用delegate关键字来定义一个委托类型 public delegate void helloDelegate(string name); public void hello(string name,helloDelegate helloLanguage) { //调用委托 helloLanguage (name); } //美国人打招呼 public void helloEnglish(string name) { Console.WriteLine ("Hello,{0}", name); } //中国人打招呼 public void helloChinese(string name) { Console.WriteLine ("你好,{0}", name); } public static void Main (string[] args) { People man = new People (); man.hello ("Lucy", man.helloEnglish); man.hello ("李华", man.helloChinese); Console.Read (); //Console.WriteLine ("Hello World!"); } } }