c#委托把方法当成参数

静态方法代理:

 

ExpandedBlockStart.gif 代码
public   delegate   void  DoGreeting( string  name); 

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

        
///   <summary>
        
///  委托(代理的方法)
        
///   </summary>
        
///   <param name="name"></param>
        
///   <param name="markGreeting"></param>
         private   static   void  MarkGreeting( string  name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }

        
///   <summary>
        
///  用英文打招呼
        
///   </summary>
        
///   <param name="name"></param>
         private   static   void  GreetingEnglish( string  name)
        { 
           Console.WriteLine(name
+ " hello! " );
        }

        
///   <summary>
        
///  用中文打招呼
        
///   </summary>
        
///   <param name="name"></param>
         private   static   void  GreetingChinese( string  name)
        {
            Console.WriteLine(name
+ " 你好! " );
        }
    }

 

 

实例方法代理:

 

ExpandedBlockStart.gif 代码
  public   delegate   void  DoGreeting( string  name);

    
public   class  Greeting
    {
        
///   <summary>
        
///  委托(代理的方法)
        
///   </summary>
        
///   <param name="name"></param>
        
///   <param name="markGreeting"></param>
         public   void  MarkGreeting( string  name, DoGreeting markGreeting)
        {
            markGreeting(name);
        }

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

        
///   <summary>
        
///  用中文打招呼
        
///   </summary>
        
///   <param name="name"></param>
         public   void  GreetingChinese( string  name)
        {
            Console.WriteLine(name 
+   " 你好! " );
        }
    }

    
class  Program
    {
        [STAThread]
        
static   void  Main( string [] args)
        {
            Greeting greetingObj 
=   new  Greeting();

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

        }

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值