写给自各儿看的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!");
        }
    }
}