zl程序教程

您现在的位置是:首页 >  后端

当前栏目

c#委托把方法当成参数(实例讲解)

c#实例方法 参数 讲解 委托 当成
2023-06-13 09:15:16 时间

静态方法代理:

复制代码代码如下:

publicdelegatevoidDoGreeting(stringname);

classProgram
   {
       [STAThread]
       staticvoidMain(string[]args)
       {
           //方法名当成参数传给委托类型调用
           MarkGreeting("张三",GreetingEnglish);
           MarkGreeting("李四",GreetingChinese);
       }

       ///<summary>
       ///委托(代理的方法)
       ///</summary>
       ///<paramname="name"></param>
       ///<paramname="markGreeting"></param>
       privatestaticvoidMarkGreeting(stringname,DoGreetingmarkGreeting)
       {
           markGreeting(name);
       }

       ///<summary>
       ///用英文打招呼
       ///</summary>
       ///<paramname="name"></param>
       privatestaticvoidGreetingEnglish(stringname)
       {
          Console.WriteLine(name+"hello!");
       }

       ///<summary>
       ///用中文打招呼
       ///</summary>
       ///<paramname="name"></param>
       privatestaticvoidGreetingChinese(stringname)
       {
           Console.WriteLine(name+"你好!");
       }
   }


实例方法代理:
复制代码代码如下:

 publicdelegatevoidDoGreeting(stringname);

   publicclassGreeting
   {
       ///<summary>
       ///委托(代理的方法)
       ///</summary>
       ///<paramname="name"></param>
       ///<paramname="markGreeting"></param>
       publicvoidMarkGreeting(stringname,DoGreetingmarkGreeting)
       {
           markGreeting(name);
       }

       ///<summary>
       ///用英文打招呼
       ///</summary>
       ///<paramname="name"></param>
       public voidGreetingEnglish(stringname)
       {
           Console.WriteLine(name+"hello!");
       }

       ///<summary>
       ///用中文打招呼
       ///</summary>
       ///<paramname="name"></param>
       publicvoidGreetingChinese(stringname)
       {
           Console.WriteLine(name+"你好!");
       }
   }

   classProgram
   {
       [STAThread]
       staticvoidMain(string[]args)
       {
           GreetinggreetingObj=newGreeting();

           greetingObj.MarkGreeting("张三",greetingObj.GreetingEnglish);
           greetingObj.MarkGreeting("李四",greetingObj.GreetingChinese);

       }