using System;
using System.Collections;
using System.Text;namespace DelegateTest{public delegate void GreetingDelegate(string name);public class GreetingManager {
public GreetingDelegate delegate1; public void GreetPeople(string name){
if(delegate1 != null) {
delegate1(name);
}
}
}class Program{
private static void EnglishGreeting(string name){
Console.WriteLine("Monring,"+name);
} private static void ChineseGreeting(string name){
Console.WriteLine("早上好,"+name);
} public static void Main(string[] args){
GreetingManager gm = new GreetingManager();
gm.delegate1 = EnglishGreeting;//错误:在不带括号的情况下使用方法,怎么该啊
gm.delegate1 += ChineseGreeting; gm.GreetPeople("张三");
}
}}

解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.Text;namespace Delegate {
         //定义委托,它定义了可以代表的方法的类型
         public delegate void GreetingDelegate(string name);
            class Program {           private static void EnglishGreeting(string name) {
                   Console.WriteLine("Morning, " + name);
               }           private static void ChineseGreeting(string name) {
                   Console.WriteLine("早上好, " + name);
               }           //注意此方法,它接受一个GreetingDelegate类型的方法作为参数
               private static void GreetPeople(string name, GreetingDelegate MakeGreeting) {
                   MakeGreeting(name);
                }           static void Main(string[] args) {
                   GreetPeople("张三", EnglishGreeting);
                   GreetPeople("李四", ChineseGreeting);
                   Console.ReadKey();
               }
            }
        }
      

  2.   

    输入: Console.WriteLine();
    输出: Console.ReadLine();
      

  3.   

    FrameWork 2.0运行完全没问题。