[STAThread] 
static   void   Main(string[]   args) 

// 
//   TODO:   在此处添加代码以启动应用程序 
// PeopleGreeting( "好人 ",a); 
 
Console.ReadLine(); 

public   delegate   void   GreetingDelegate(string   name); 
public   void   EnglishGreeting(string   name) 

Console.WriteLine( "morning "+name); 

public   void   ChineseGreeting(string   name) 

Console.WriteLine( "早上好~ "+name); 
} GreetingDelegate   a=new GreetingDelegate   (ChineseGreeting);
ChineseGreeting b=new ChineseGreeting(EnglishGreeting);
private   static   void   PeopleGreeting(string   name,GreetingDelegate   GreetingMethod) 

GreetingMethod(name); 

解决方案 »

  1.   

    //输出:早上好~好人
    //如果你用
    PeopleGreeting("好人",b);   
    //输出:morning   好人
      

  2.   

    GreetingDelegate和类有相似之处,在使用之前是需要实例化的:PeopleGreeting( "好人 ",new GreetingDelegate(ChineseGreeting)); PeopleGreeting方式的第二个参数是一个委托型的实例,你不能直接传递方法,而是应该先创建一个GreetingDelegate的实例,将你真正需要调用的方法ChineseGreeting传给该委托的实例,否则委托并不知道它应该调用哪个方法。回忆一下在winform中是如何使用事件的吧,比如一个按钮的点击事件:
    button.Click+=new EventHandler(click_process_method_name);
    EventHandler实际上也是一个委托,因此我们也同样需要先将它实例化
      

  3.   

    我用这个方法作出来了
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    //
    // TODO: 在此处添加代码以启动应用程序
    //
    Class1 cls=new Class1();
    GreetingDelegate a=new GreetingDelegate(cls.EnglishGreeting);
    GreetingDelegate b=new GreetingDelegate(cls.ChineseGreeting);
    PeopleGreeting("好人",b);
    Console.ReadLine();
    }
    public delegate void GreetingDelegate(string name);
    public void EnglishGreeting(string name)
    {
    Console.WriteLine("morning"+name);
    }
    public void ChineseGreeting(string name)
    {
    Console.WriteLine("早上好~"+name);
    }


    private static void PeopleGreeting(string name,GreetingDelegate GreetingMethod)
    {
    GreetingMethod(name);
    } }
    类的实例中的方法进行绑定