C#委托学习笔记


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("Jack Ma", EnglishGreeting); 
     GreetPeople("马云", ChineseGreeting); 
     Console.ReadKey(); 
    }
  } 
} 
输出如下: Morning, Jack Ma
          早上好, 马云
//总结,Delegate可以把方法(例如具有相同参数x的方法A,B,C...)作为方法(需要调用A(x),B(x),C(x))的参数。
namespace Delegate {
    //定义委托,它定义了可以代表的方法的类型
    public delegate void GreetingDelegate(string name);
    
    //新建的GreetingManager类
    public class GreetingManager{
       public void GreetPeople(string name, GreetingDelegate MakeGreeting) {
           MakeGreeting(name);
       }
    }

    class Program {
       private static void EnglishGreeting(string name) {
           Console.WriteLine("Morning, " + name);
       }

       private static void ChineseGreeting(string name) {
           Console.WriteLine("早上好, " + name);
       }

       static void Main(string[] args) {
           // ... ...
        }
    }
}


static void Main(string[] args) {
    GreetingManager gm = new  GreetingManager();
    gm.GreetPeople("Jack Ma", EnglishGreeting);
    gm.GreetPeople("马云", ChineseGreeting);
}

猜你喜欢

转载自blog.csdn.net/Qhj_Miracle/article/details/83213921