美文网首页C#
C#下的代理和委托使用

C#下的代理和委托使用

作者: lotawei | 来源:发表于2016-12-27 09:58 被阅读246次

描述情景:利用代理委托和事件我们处理 老板 员工 包含的动作 买烟 涨工资
实现:老板要抽烟需要买烟会让员工去买烟,然后就给员工涨工资.

Boss

 class Boss
    {
        public delegate void BuySmokeHandle(Boss boss, Employee em);
        //定义老板抽烟的事件
        public event BuySmokeHandle smokehandler;
        public string name;
        
        public  Boss()
        {
            name = "老板";
            //注册抽烟事件  交由哪个函数来处理

            //调用方式1: 可以注释行 97
       //     smokehandler += new BuySmokeHandle(smokeevent);  
        }
        public  void  asksmoke(Employee   em)
        {
            if (this.smokehandler != null)
            {
                BuySmokeHandle hander = new BuySmokeHandle(em.buysomke);
                hander(this, em);
            }
        }
        public  virtual  void smokeevent(Boss  boss,Employee emname)
        {
            Console.WriteLine("e:{0}给b:{1}买的烟抽完了,{2}你很不错  //事件的使用", emname.name, boss.name,emname.name);
            //因此我决定还可以多做一些事情,在抽到烟过后 ,小王 你的工资张拉
            emname.slary = 8000;
        }



    }

Empoyee

  class Employee
    {
        public double slary
        {
            get; set;
        }
        public string name
        {
            get; set;
        }
        public Employee()
        {
            name = "员工";
        }
        public   void   buysomke(Boss boss,Employee  emnamme)
        {
            Console.WriteLine("e:{0}给b:{1}买了烟 //代理方式让下属买烟",emnamme.name,boss.name);
            //让买到烟  老板 就要去抽烟
            boss.smokeevent(boss, emnamme);
        }
    }

调用

      Boss boss = new Boss();
        boss.name = "张与";
        Employee em = new Employee();
        em.name = "小王";
        //方式2: 可以注释35
        boss.smokehandler += new Boss.BuySmokeHandle(boss.smokeevent);
        boss.asksmoke(em);
        Console.WriteLine("{0}的工资涨到了{1}",em.name, em.slary);
        Console.ReadLine();

相关文章

  • C#下的代理和委托使用

    描述情景:利用代理委托和事件我们处理 老板 员工 包含的动作 买烟 涨工资实现:老板要抽烟需要买烟会让员工去买烟,...

  • C#中的Action<>和Func<>的

    用过C#的委托的同学都是这Action<> 和 Func<>都是委托【代理】的简写形式!!! 我们先看看定义委托和...

  • 教小明学一点点编程—C#篇(0)

    像小明这样使用C#的新同学,一定都会被C#的复杂的委托事件机制所困惑,那么我们不如解释一下什么是C#中委托。 委托...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • 人情事故的代理(delegate)关系

    在很多的语言中,都会有委托和代理的关系,想当时在学习C#时候,其中就有代理的概念,当时就直接的蒙了。如今在iOS开...

  • C#委托与代理

    使用delegate的好处: 规则由publisher制定,统一,适合打框架,有类似c++头文件的好处。 而传统...

  • Java代理模式

    代理的实现分为: 1.静态代理实现 2.动态代理 委托类和委托对象:委托类是一个类,委托对象是委托类的实例。代理类...

  • 认识动态代理随笔

    1. 什么是动态代理 静态代理是一般是由委托类和代理类实现同一个接口,代理类使用组合的方式来对委托类进行扩展代理过...

  • 委托及其用法

    C#委托使用详解(Delegates) 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说...

  • C#基础提升系列——C#委托

    C# 委托 委托是类型安全的类,它定义了返回类型和参数的类型,委托类可以包含一个或多个方法的引用。可以使用lamb...

网友评论

    本文标题:C#下的代理和委托使用

    本文链接:https://www.haomeiwen.com/subject/sboxvttx.html