委托系列学习之委托基础

委托概念

百度百科:

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。 这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

数据结构本质:

委托和类一样,是一种用于封装命名或匿名方法的用户自定义引用类型。 委托和类同级,类表示数据集合,委托表示对一个或多个方法的引用,储存的是一系列具有相同参数和返回类型方法的地址列表,调用委托时,此委托列表的所有方法都将被执行。

语言框架角度:

委托是.net中函数回调机制的实现方式。 是函数指针在面向对象中的封装, 是面向对象的、类型安全的、可靠的函数指针。

特点:

委托演进

  1. c# 1.0:基本委托语法
  2. c# 2.0:实例化可省略new 与 匿名方法
  3. c# 3.0及以上版本:lambda 表达式(=> 读作 "goes to")
  4. c# 3.0之后

委托使用场景

使用事件或事件设计模式时

就是Observer设计模式,它定义了对象之间一对多的关系,并且通过事件触发机制关联它们。当一个对象中发生了某事件后,依赖它的其他对象会被自动触发并更新。

需要封装静态方法时

委托绑定的方法可以是静态方法、非静态方法和匿名方法,而C#中接口不能是静态的。

调用方不需要访问实现该方法的对象中的其他属性、方法或接口时

类中的某个成员函数绑定到委托,调用该方法时只与这个成员函数有关,与该类里的其他属性无关。

需要方便的组合时

一个委托绑定的多个方法可以自由组合。一个委托的对象可以绑定多个方法,而且这多个方法是没有限制可以任意组合的,委托灵活的绑定和解绑定策略使得使用非常方便。

类可能需要该方法的多个实现时

一个委托的对象可以绑定多个方法(多播委托),当我们运行时需要的不是单一的方法时,接口很难实现。

委托使用步骤:

1、定义委托


2、实例化委托



3、调用(执行)委托