The c delegate treats the method as an instance of the parameter of

  • 2020-06-07 05:12:11
  • OfStack

Static method proxy:


public delegate void DoGreeting(string name); 
class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            // The method name is called as an argument to the delegate type 
            MarkGreeting(" zhang 3", GreetingEnglish);
            MarkGreeting(" li 4", GreetingChinese);
        }
        /// <summary>
        ///  entrust ( Method of proxy )
        /// </summary>
        /// <param name="name"></param>
        /// <param name="markGreeting"></param>
        private static void MarkGreeting(string name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }
        /// <summary>
        ///  Greet in English 
        /// </summary>
        /// <param name="name"></param>
        private static void GreetingEnglish(string name)
        { 
           Console.WriteLine(name+"hello!");
        }
        /// <summary>
        ///  Greet in Chinese 
        /// </summary>
        /// <param name="name"></param>
        private static void GreetingChinese(string name)
        {
            Console.WriteLine(name+" hello !");
        }
    }

Instance method proxy:

 public delegate void DoGreeting(string name);
    public class Greeting
    {
        /// <summary>
        ///  entrust ( Method of proxy )
        /// </summary>
        /// <param name="name"></param>
        /// <param name="markGreeting"></param>
        public void MarkGreeting(string name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }
        /// <summary>
        ///  Greet in English 
        /// </summary>
        /// <param name="name"></param>
        public  void GreetingEnglish(string name)
        {
            Console.WriteLine(name + "hello!");
        }
        /// <summary>
        ///  Greet in Chinese 
        /// </summary>
        /// <param name="name"></param>
        public void GreetingChinese(string name)
        {
            Console.WriteLine(name + " hello !");
        }
    }
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            Greeting greetingObj = new Greeting();
            greetingObj.MarkGreeting(" zhang 3", greetingObj.GreetingEnglish);
            greetingObj.MarkGreeting(" li 4", greetingObj.GreetingChinese);
        }


Related articles: