最简单的代理示例

using  System;
delegate   void  EatDelegate( string  food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型
class  MyDelegate
{
    
static void zsEat(string food)
    
{
        Console.WriteLine(
"张三吃" + food);
    }

    
static void Main()
    
{
        EatDelegate zs 
= new EatDelegate(zsEat);//代理了zsEat这个方法
        zs("青菜");
    }

}

 

愚笨的代理

using  System;
delegate   void  EatDelegate( string  food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型
class  MyDelegate
{
    
static void zsEat(string food)
    
{
        Console.WriteLine(
"张三吃" + food);
    }

    
static void lsEat(string food)
    
{
        Console.WriteLine(
"李四吃" + food);
    }

    
static void wwEat(string food)
    
{
        Console.WriteLine(
"王五吃" + food);
    }

    
static void Main()
    
{
        EatDelegate zs 
= new EatDelegate(zsEat);//代理了zsEat这个方法
        EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法
        EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法
        zs("青菜");
        ls(
"青菜");
        ww(
"青菜");

    }

}

 使用委托链的代理

using  System;
delegate   void  EatDelegate( string  food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型
class  MyDelegate
{
    
static void zsEat(string food)
    
{
        Console.WriteLine(
"张三吃" + food);
    }

    
static void lsEat(string food)
    
{
        Console.WriteLine(
"李四吃" + food);
    }

    
static void wwEat(string food)
    
{
        Console.WriteLine(
"王五吃" + food);
    }

    
static void Main()
    
{
        EatDelegate zs 
= new EatDelegate(zsEat);//代理了zsEat这个方法
        EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法
        EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法
        EatDelegate eatChain;//定义一个委托链,并未实例化
        eatChain = zs + ls + ww;
        eatChain(
"青菜");

    }

}

愚笨的委托链

using  System;
delegate   void  EatDelegate( string  food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型
class  MyDelegate
{
    
static void zsEat(string food)
    
{
        Console.WriteLine(
"张三吃" + food);
    }

    
static void lsEat(string food)
    
{
        Console.WriteLine(
"李四吃" + food);
    }

    
static void wwEat(string food)
    
{
        Console.WriteLine(
"王五吃" + food);
    }

    
static void Main()
    
{
        EatDelegate zs 
= new EatDelegate(zsEat);//代理了zsEat这个方法
        EatDelegate ls = new EatDelegate(lsEat);//代理了lsEat这个方法
        EatDelegate ww = new EatDelegate(wwEat);//代理了wwEat这个方法
        EatDelegate eatChain;//定义一个委托链,并未实例化
        Console.WriteLine("张三,李四,王五开party");
        eatChain 
= zs + ls + ww;
        eatChain(
"青菜");
        Console.WriteLine(
"李四出去接电话");
        eatChain 
-= ls;// 重载-=对委托链中的代理进行操作
        eatChain("白菜");
        Console.WriteLine(
"李四回来了");
        eatChain 
+= ls;
        eatChain(
"苹果");
    }

}
using  System;
delegate   void  EatDelegate( string  food); // 定义了一个委托,委托与预欲委托的方法具有相同的返回值,相同的参数个数与类型
class  Man
{
    
private string name;
    
public Man(string name)
    
{
        
this.name = name;
    }

    
public void eat(string food)
    
{
        Console.WriteLine(name 
+ "" + food);
    }

}

class  party

 
static void Main()
    
{
        Man ZS 
= new Man("张三");
        Man LS 
= new Man("李四");
        Man WW 
= new Man("王五");
        EatDelegate zs 
= new EatDelegate(ZS.eat);//代理了ZS.eat这个方法
        EatDelegate ls = new EatDelegate(LS.eat);//代理了LS.eat这个方法
        EatDelegate ww = new EatDelegate(WW.eat);//代理了WW.eat这个方法
        EatDelegate eatChain;//定义一个委托链,并未实例化
        Console.WriteLine("张三,李四,王五开party");
        eatChain 
= zs + ls + ww;
        eatChain(
"青菜");
        Console.WriteLine(
"李四出去接电话");
        eatChain 
-= ls;// 重载-=对委托链中的代理进行操作
        eatChain("白菜");
        Console.WriteLine(
"李四回来了");
        eatChain 
+= ls;
        eatChain(
"苹果");
    }

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值