深入剖析委托本质:如何全面把握委托概念?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2496个文字,预计阅读时间需要10分钟。
在上一篇随笔中,我们通过实例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的本质。
委托本质上是一个类,它继承了System.Mu。我们用关键字delegate声明委托时,所有这些委托都继承了System.Mu。
在上一篇随笔中我们通过示例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的实质。
委托在本质上仍然是一个类,我们用delegate关键字声明的所有委托都继承自System.MulticastDelegate。后者又是继承自System.Delegate类,System.Delegate类则继承自System.Object。委托既然是一个类,那么它就可以被定义在任何地方,即可以定义在类的内部,也可以定义在类的外部。
正如很多资料上所说的,委托是一种类型安全的函数回调机制, 它不仅能够调用实例方法,也能调用静态方法,并且具备按顺序执行多个方法的能力。
委托揭秘在把委托说透(1)中可以看到,委托的使用其实是很简单的。尽管如此,其内部实现仍然相当复杂。.NET强大的编译器和CLR掩盖了这种复杂性。
为了解释方便,我们把(1)中的委托代码复制在下面,并做一处小小的改动,将LogToTextFile设置为实例方法。
本文共计2496个文字,预计阅读时间需要10分钟。
在上一篇随笔中,我们通过实例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的本质。
委托本质上是一个类,它继承了System.Mu。我们用关键字delegate声明委托时,所有这些委托都继承了System.Mu。
在上一篇随笔中我们通过示例逐步引入了委托,并比较了委托和接口。本文将重点剖析委托的实质。
委托在本质上仍然是一个类,我们用delegate关键字声明的所有委托都继承自System.MulticastDelegate。后者又是继承自System.Delegate类,System.Delegate类则继承自System.Object。委托既然是一个类,那么它就可以被定义在任何地方,即可以定义在类的内部,也可以定义在类的外部。
正如很多资料上所说的,委托是一种类型安全的函数回调机制, 它不仅能够调用实例方法,也能调用静态方法,并且具备按顺序执行多个方法的能力。
委托揭秘在把委托说透(1)中可以看到,委托的使用其实是很简单的。尽管如此,其内部实现仍然相当复杂。.NET强大的编译器和CLR掩盖了这种复杂性。
为了解释方便,我们把(1)中的委托代码复制在下面,并做一处小小的改动,将LogToTextFile设置为实例方法。

