private delegate void GreetingDelegate(string name);
                private void EnglishPeople(string name) 
        {
            MessageBox.Show("morning"+name);
        }        private void ChinesePeople(string name)
        {
            MessageBox.Show("早上好!"+name);
        }
         
        
        private void GreetPeople(string name,GreetingDelegate MakeGreeting) 
        {
            MakeGreeting(name);
        }        public void button1_Click(object sender, EventArgs e)
        {
            GreetPeople("成龙",ChinesePeople);
        }想问一下大家 MakeGreeting 为什么能代表EnglishPeople(),ChinesePeople()方法 。如果我在写一个方法,它还能代表吗

解决方案 »

  1.   

    只要符合委托的都可以,这是.NET的一种机制
      

  2.   

    试了一下,楼主的好像已经实现了调用ChinesePeople()方法了吧
      

  3.   

    如果我在定义一个 private void GetName(int id){}方法,是不是就不能在使用委托了?
      

  4.   

    你定义的方法必须与委托相同,即返回类型、参数个数、参数类型等等都必须与委托相同
    然后再程序运行的初始化过程中,注册委托,如
    englishpople+=new GreetingDelegate;
    即可