在C#中,委托(delegate)类似于指针一样,是指向某个具体的方法的引用类型变量。

一般用来进行 方法级别 解耦,提高灵活性和可扩展性。

声明委托:

        //定义好3个委托private delegate string delegateA();private delegate string delegateB(string par);private delegate int delegateC(int par);

定义好需要通过委托调用的方法:

    /// <summary>/// 在类中定义好方法/// 在类外部使用委托调用/// </summary>class delegateClass{public string GetA(){return "delegateA--委托返回";}public string GetB(string par){return par;}public int GetC(int par){return par;}}

实例化委托:

            //实例化目标类delegateClass deleClass = new delegateClass();//将委托与指定的方法绑定delegateA @delegateA = new delegateA(deleClass.GetA);//绑定无参数方法delegateB @delegateB = new delegateB(deleClass.GetB);//绑定一个字符类型参数方法delegateC @delegateC = new delegateC(deleClass.GetC);//绑定一个整数类型参数方法

调用委托:

            //输出委托调用后返回的结果Console.WriteLine(delegateA.Invoke());Console.WriteLine(delegateB.Invoke("delegateB--委托返回"));Console.WriteLine("delegateC--委托返回--"+delegateC.Invoke(11));

输出结果:

委托的多播

在 delegateClass 增加两个方法

        public void GetD(){Console.WriteLine("delegateD--委托返回");}public void GetE(){Console.WriteLine("delegateE--委托返回");}

使用 新定义的 @delegateE 委托进行多播操作:

            //实例化目标类delegateClass deleClass = new delegateClass();//将委托与指定的方法绑定delegateA @delegateA = new delegateA(deleClass.GetA);//绑定无参数方法delegateB @delegateB = new delegateB(deleClass.GetB);//绑定一个字符类型参数方法delegateC @delegateC = new delegateC(deleClass.GetC);//绑定一个整数类型参数方法//输出委托调用后返回的结果Console.WriteLine(delegateA.Invoke());Console.WriteLine(delegateB.Invoke("delegateB--委托返回"));Console.WriteLine("delegateC--委托返回--"+delegateC.Invoke(11));//委托多播delegateE @delegateE = deleClass.GetE;//可以直接指定方法实例化委托@delegateE += deleClass.GetD;//通过+=符号向委托追加需要多播操作的方法,同理-=可以在列表中删除多播的方法。//调用多播委托列表delegateE.Invoke();

输出结果:

委托的多播可以一次调用多个方法,具体的用法根据可以根据项目需要自行设计,微软给出的示例是 用来写日志,同时向多个位置(控制台、文件)输出日志,可以用来参考。

.Net C# delegate 委托相关推荐

  1. Strategy模式与Delegate委托

    Strategy模式是对算法的封装.即使是一个计算行为,如果其实现有其多样性,为达到易扩展的目的,我们也有必要将其抽象出来,以接口的形式来定义.由于充分利用了面向对象的多态性,在调用该行为时,其具体的 ...

  2. delegate委托

    delegate委托: 三个概念: C# 中的委托类似于 C 或 C++ 中的函数指针. 委托是面向对象.类型安全的,并且是安全的. 委托和接口的类似之处是:它们都允许分隔规范和实现. 一个原则: 被 ...

  3. C# Delegate(委托)与多线程

    C# Delegate(委托)与多线程 很多时候写windows程序都需要结合多线程,在.net中用如下得代码来创建并启动一个新的线程.     public void ThreadProc();   ...

  4. 【C#学习】delegate(委托) 和 event(事件)

    C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针.委托(Delegate) 是存有对某个方法的引用的一种引用类型变量.引用可在运行时被改变.在C#中方法不能作为参数直接传递,必须 ...

  5. 转:终于会用c#中的delegate(委托)和event(事件)了

    第一个例子: public class DelegateTest {// 声明delegate对象 public delegate void CompareDelegate(int a,int b); ...

  6. Delegate委托的使用

    Delegate委托的使用 委托的说明 委托(delegate)是Cocoa的一个术语,表示将一个对象的部分功能转交给另一个对象. 比如对象A希望对象B知道将要发生或已经发生某件事情,对象A可以把对象 ...

  7. UE4 C++:Delegate委托

    目录 概念 定义 声明委托 单播委托 声明宏 绑定委托 执行函数 用法示例 不带参数Delegate 带参数Delegate 传递有效负载数据 多播委托 声明宏 绑定多播委托 多播执行 动态委托 声明 ...

  8. C#学习基本概念之关键字---delegate(委托)

    委托类型的声明与方法签名相似,  有一个返回值和任意数目任意类型的参数: public delegate void TestDelegate(string message); public deleg ...

  9. Csharp关键字----delegate(委托)

    Delegate类简介 ------------------------      命名空间:System 程序集:mscorlib(在 mscorlib.dll 中) 委托(Delegate)类是一 ...

  10. delegate 委托方法

    一先定义一个委托方法 ---------第一个类XX //定议委托 public event ordinary Ordinary; //定议委托方法 public delegate void ordi ...

最新文章

  1. 数据分层/ODS/DW/DM
  2. 编写高效的C程序与C代码优化
  3. python web开发-flask中response,cookies,session对象使用详解
  4. EduCoder Linux 文件/目录管理
  5. 音视频技术开发周刊(第127期)
  6. linux命令补遗 - 4
  7. 基本查询(Query查询中文)
  8. linux 内存管理 ppt,Linux内存管理 Memory Manager.ppt
  9. Laravel Request 和 Laravel Input 常用操作方法
  10. exec和source的区别
  11. Tensorflow从开始到放弃(技术篇)
  12. 教资高中计算机知识点,如何备考教师资格证高中信息技术
  13. python图像配准的原理_SIFT图像匹配及其python实现
  14. php安全上传图片,PHP安全上传图片的方法
  15. relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared objec
  16. LeetCode动态规划题解
  17. 黑马“兔年限定”春节礼盒准时送达,快来领!
  18. hive之beeline连接与操作
  19. ath9k网卡驱动相关
  20. 西门子SMART200 通过Modbus 读取温湿度传感器数据实例

热门文章

  1. Python Web技术开发软件安装
  2. 【计算机网络】应用层体系
  3. C - 数据结构实验:哈希表
  4. Tomcat 管理和监控工具 - PSI Probe
  5. Loadrunner参数获取与传递(获取登录token,并传到请求header)
  6. 使用awk将gencode gtf注释文件转换为bed格式
  7. android 4.3 刷机,安卓4.3,oppofind7,刷5.0后卡刷4.3官方
  8. python实用批量处理图片小项目
  9. 2008年湖南省计算机应用技能竞赛-考试内容
  10. HDU-4539-郑厂长系列故事——排兵布阵