C#基础学习之委托的理解和应用

王朝学院·作者佚名  2016-05-17
窄屏简体版  字體: 小  |  中  |  大  |  超大  

C#基础学习之委托的理解和应用 委托的使用和语法定义

委托的使用是由四步来完成的,依次为:声明委托、创建委托对象、委托关联方法、调用

我们用一个例子来说明这四步如何操作,我们完成一个老板委托员工写报告的实例,看如何实现。

首先我们应该定义两个类,老板类Boss和员工类Employee,老板委托员工写报告,其实是老板什么都没做,而是告诉员工去做事情(写报告),

那我们的定义如下

public class Boss { //声明委托 public delegate void DoWorkEventHandler(string content); //创建委托对象 public DoWorkEventHandler WorkEventHandler; //做事情 public void DoWork(string content) { if (WorkEventHandler != null) { WorkEventHandler.Invoke(content); //或者如下调用 //handler(content); } }}

委托的声明和创建都是在Boss里定义的,DoWork内部只是对委托进行了调用,但目前看不出来到底做了什么事情。再看员工类的实现

public class Employee { public void DoWork(string content) { Console.WriteLine(string.Format("老板委托我{0}", content)); } }

员工类里定义了DoWork方法,实现具体做什么事情

那接下来我们就来看Boss是如何委托给Employee做事情的

public class DelegateExecutor { public static void Run() { Boss boss = new Boss(); string content = "写报告"; //委托注册关联方法 boss.WorkEventHandler = new Boss.DoWorkEventHandler(new Employee().DoWork); // boss.DoWork(content); } }

其实在调用boss.DoWork的时候,内部是委托调用了Employee.DoWork方法。好了,这样我们最终完成老板委托员工写报告的功能。

委托的优点

如果我们按照一般的写法实现以上功能的话,我们可能这样写

public class Boss { public void DoWork(string content) { Employee employee = new Employee(); employee.DoWork(content); } }

我们看这样有个显著的问题就是Boss和Employee类产生了直接依赖,耦合在了一起,然而使用委托实现的例子中,Boss完全不知道Employee的存在,

消除了两者之间的耦合,是不是比传统的写法要好很多。

下篇文章我来介绍事件的使用

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航