c#委托案例和理解

以下采用员工玩游戏,老板扣工资的案例:

   class Boss
    {
        private int money = 20;
        public void RSalary(int wage)
        {

            Console.WriteLine("老板发现扣工资{0}¥,剩余{1}", money,wage-money);

        }

    }
    class Employment
    {
        //为了减少老板的工作,同时低耦合,使用委托代替老板工作
        public delegate void PGHandler(int pay);//定义参数委托
        public event PGHandler PGevent;//定义事件
        //Boss bs = new Boss();
        public string name="bin";
        public string  number="S-0001";
        public int wage=5000;
        public void PlayGame()
        {
            Console.WriteLine("员工{0}玩游戏,工号为{1}", name, number);
            if (PGevent != null)
            {
                //如果有对象注册
                PGevent(wage);//调用所有注册对象的方法
            }
            //bs.RSalary();//最原始的,员工玩游戏就调用老板类的扣工资方法。
        }
        public void Chat()
        {
            Console.WriteLine("员工{0}QQ聊天,工号为{1}", name,number);
            if (PGevent != null)
            {
                PGevent(wage);
            }
            //bs.RSalary();
        }

    }

    class Program
    {
        static void Main(string[] args)
        {
            Employment em = new Employment();
            Boss bs = new Boss();
            em.PGevent += bs.RSalary;//注册方法
            em.PlayGame();//玩游戏,会自动调用注册过的扣工资方法
            em.Chat();
            Console.ReadLine();
        }
    }
}
时间: 2024-10-12 01:16:47

c#委托案例和理解的相关文章

C#知识体系(二)用案例来理解委托与事件

上一篇博客讲到了LinQ和lambda的常用方法 还有很多我们未知但c#设计团队已经为我们封装好的类和方法.随着我们不断的熟悉C#语言,渐渐的就会接触到其他的知识点,委托.事件.反射.线程.同步,异步.IO.套接字...这些东西我们平常用到的不多,都是些概念性的东西,也许是因为不熟悉而可以回避了使用这些东西,不可否认的是 就算不用这些我们依然能想到问题的解决办法.但是几乎所有语言都会有这些概念,因为在某些场景它们能发挥不可思议的能力. 其实我到现在还是没有掌握委托和事件,在工作或者设计中也尽量回

C#委托零基础理解

C#委托零基础理解(转) 1,  为什么使用委托  2.什么是委托  3.委托如何使用 为什么使用委托? 委托是c#中非常重要的一个概念,使用委托使程序员可以将方法引用封装在委托对象内.然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法.与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的. 什么是委托? 委托是一种引用方法的类型,一旦为委托分配了方法,委托将与该方法具有相同的行为,委托方法的使用和其他方法一样,具有参数和返回值. 如何使用委托 下面咱们

委托事件的理解

委托是一种带有签名的类,需要用复合这个签名的静态函数或者非静态函数来初始化,就像楚怀王说:"先入秦关者望之".此时还不知道谁会先入秦观,可能是刘邦,可能是项羽.等到时间发展到一定时机,结论出来了,这个事委托给刘邦了.前提是刘邦复合这个签名,先入秦关了. 事件和委托类似,只不过事件源于委托,声明的时候需要先定义一个委托类型.也就是委托和类同级,事件和类里的属性方法同一个级别.事件只能在定义该事件的类里被初始化和使用,除了+=和-=.而委托无此限制.事件更形象化,就像,反秦起义这个事件爆发

C#中委托的进一步理解

文章介绍了委托的基本知识,接下来就进一步研究一下委托. 委托类型 其实,刚开始觉得委托类型是一个比较难理解的概念,怎么也不觉得下面的"AssembleIphoneHandler"是一个类型. 代码如下: public delegate void AssembleIphoneHandler(); 按照正常的情况,如果我们要创建一个委托类型应该是: 代码如下: public class AssembleIphoneHandler : System.MulticastDelegate { }

C#对委托的初步理解理解

作为新手对委托的学习: 1.定义委托:委托实际上是一个类,在定义委托前就知道了方法的返回类型和方法的参数类型(可以把委托理解为只知道方法的返回类型和方法的参数类型,不知道方法体) public  delegate string TestDelegate(string test); 2.实例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Thre

c#委托事件 自己理解

都说C#的委托与事件,对初学者来说很难,但是一跃过去就很简单了 单是我这个一跃不知道还要多久,为什么对有些人来说简单的事,我却那么难,好吧,这个是必须掌握的 需求:发卡器,我要去程序中调用发卡器的方法,得到卡的卡号信息 常人理解:很简单,卡一方,点下读取的事件就可以了 我:想把它做成公用的DLL,使用事件注册来实现读取卡号 1.新建类库 ReaderTest-->类Reader public Reader(){}-->构造函数(里面又写了连接发卡器的方法) 2.定义委托 public dele

总结:C# 委托的全面理解

在说事件之前得先了解委托. 委托,外表看来和C/C++中函数指针没什么区别,但是本质上你才发现他其实就是个类!也就是说理解委托得从 这个两个方面去理解(单从一个方面去理解感觉就怪怪的呵呵!) 理解委托: 什么是委托?委托是c#中类型安全的,可以订阅一个或多个具有相同签名方法的函数指针. 声明一个委托,相当于声明了一个是函数指针类型,委托是一种类型,进一步说,他就是一个类! 他的目的就是,将方法可以作为其他方法的参数传递!进一步说,就是一个方法内部需要调用另一种方法 (及方法内部还有一个方法),且

winform总结2> Action<> ,Action,func<>,委托相关的理解

1,他们是什么: Action 封装一个方法,该方法不具有参数并且不返回值. Action<> 封装一个方法,该方法具有最多16个参数并且不返回值. func<> 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法.最多可以传递16个参数,并且可以有返回值,最后一个参数是返回值. 目前了解到的好像也只有委托是需要传递一个方法的,既然这里的三个方式都是封装一个方法,那么这种写法就肯定是可以用到给委托传递参数一类型的任务时用,想想刚开始学习委托的时候,要给他传递一个方法

对jQuery中on方法委托事件的理解

关于on方法中的委托事件,官方JQ API如下: http://api.jquery.com/on/#on-events-selector-data-handler 参考大牛阮一峰的博文: http://www.ruanyifeng.com/blog/2011/08/jquery_best_practices.html 什么时候使用委托事件: 1.对未被创建的元素添加事件监听 2.避免频繁添加或删除event handler,委托父元素来进行事件处理 使用委托事件的优点: 1.大量减少监听元素的