//定义委托,它定义了可以代表的方法的类型       
    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)  
        //也可以直接使用系统内置委托
        //private static void GreetPeople(string name, Action<string> MakeGreeting) 
        { MakeGreeting(name); }              
        
        static void Main(string[] args) 
        { 
            GreetPeople("Jimmy Zhang", EnglishGreeting);
            GreetPeople("张子阳", ChineseGreeting); 
            Console.ReadKey(); 
        }
    }
原文:http://www.cnblogs.com/itjeff/p/3997979.html