C#中委托的简单解释

C#中委托的简单解释

ID:37914285

大小:41.50 KB

页数:6页

时间:2019-06-02

C#中委托的简单解释_第1页
C#中委托的简单解释_第2页
C#中委托的简单解释_第3页
C#中委托的简单解释_第4页
C#中委托的简单解释_第5页
资源描述:

《C#中委托的简单解释》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、委托委托应该是c#里面比较难理解的方面之一,所以成为很多项目经理面试员工的常问问题,下面是从网上看到的一篇文章,写的不错很形象,所以引过来,然后在说明一下委托的用处。//比如说一个公司(场景),你是老板,手下有两个员工,小张和小王。//你命令小王,如果小张玩游戏,则小王扣去小张500元钱。//这就是现实中的委托。//实际上,在写程序中,程序员就是老板,小张和小王就是两个对象。//小张玩游戏是一个方法,小张还有一个游戏事件,他玩游戏激发这个事件。//而小王就是事件处理对象,他负责把小张的钱扣除500。//所以,委托有如下几个要素://1激发事件的对象--就是小张//2处理对象事

2、件的对象--就是小王//3定义委托,就是你让小王监视小张。//如果这三个要素都满足的话,则你就写出了一个完整事件的处理。//下面有个例子:在vs.net2003C#控制台应用程序编辑运行成功:usingSystem;namespaceCSharpConsole{publicclass场景{[STAThread]publicstaticvoidMain(string[]args){Console.WriteLine("场景开始了....");//生成小王小王w=new小王();//生成小账小张z=new小张();//指定监视z.PlayGame+=newPlayGameHand

3、ler(w.扣钱);//开始玩游戏z.玩游戏();console.writeline("场景结束...");Console.ReadLine();}}//负责扣钱的人publicclass小王{public小王(){Console.WriteLine("生成小王...");}publicvoid扣钱(objectsender,EventArgse){Console.WriteLine("小王:好小子,上班时间胆敢玩游戏...");Console.WriteLine("小王:看看你小子有多少钱...");小张f=(小张)sender;Console.WriteLine("小张的

4、钱:"+f.钱.ToString());Console.WriteLine("开始扣钱......");System.Threading.Thread.Sleep(500);f.钱=f.钱-500;Console.WriteLine("扣完了....现在小张还剩下:"+f.钱.ToString());}}//如果玩游戏,则引发事件publicclass小张{//先定义一个事件,这个事件表示“小张”在玩游戏。publiceventPlayGameHandlerPlayGame;//保存小张钱的变量privateintm_Money;public小张(){Console.Writ

5、eLine("生成小张....");m_Money=1000;//构造函数,初始化小张的钱。}publicint钱//此属性可以操作小张的钱。{get{returnm_Money;}set{m_Money=value;}}publicvoid玩游戏(){Console.WriteLine("小张开始玩游戏了.....");Console.WriteLine("小张:CS好玩,哈哈哈!我玩.....");System.Threading.Thread.Sleep(500);System.EventArgse=newEventArgs();OnPlayGame(e);}prote

6、ctedvirtualvoidOnPlayGame(EventArgse){if(PlayGame!=null){PlayGame(this,e);}}}//定义委托处理程序publicdelegatevoidPlayGameHandler(objectsender,System.EventArgse);}实际上,委托的原理是获取一个窗体的句柄(窗体的指针),通过窗体的指针调用其方法,c#封装了c++的指针,使其更加安全和简单,但是指针封装了带来有些问题无法处理,于是出现了委托的概念。我所用到的委托有两个方面:(1)一个窗体(父窗体)中弹出另一个窗体(子窗体),子窗体中的事件

7、触发父窗体的函数;如,从父窗体中弹出一个设置窗体,设置完毕点击ok按钮后,刷新父窗体。(2)一个窗体(父窗体)中弹出另两个窗体(子窗体1和子窗体2),子窗体1中的事件触发子窗体2中的函数;如,应用多文档窗体时候,一个子窗体中选择改变在另一个窗体中有所反映。第一种方式:代码如下:子窗体代码:publicdelegatevoidPlayGameHandler(inti);publiceventPlayGameHandlershijian;privatevoidFormSon_Load(objectsende

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。