C# 委托

作者: 张中华 | 来源:发表于2019-04-09 21:58 被阅读3次

什么是委托?

委托是寻址方法的.NET版本,使用委托可以将方法作为参数进行传递。委托是一种特殊类型的对象,其特殊之处在于委托中包含的是一个或多个方法的地址,而不是数据。委托虽然看起来像是一种类型,但其实定义一个委托,是定义了一个新的类。

那么如何定义一个委托呢?

格式: 修饰符 delegate 返回值类型 委托名(参数);

例如:
public delegate string StringDelegate();
此时这里就定义了一个名为StringDelegate,返回值类型为String,无参数 的委托。
那么,定义好了一个委托,我们要怎么去使用这个委托呢?

实例化格式: 委托名 实例名 = new 委托名(方法);

如:
int x = 10;
StringDelegate del = new StringDelegate(x.ToString);
此时引用int类型的ToString方法,注意,此时只是让del指向x.ToString, 还并未调用该方法。

如果需要执行该方法,还需要del调用ToString方法,才可执行。
如:
var result = del();

通过以上的解释,很好的阐述了:

  1. 委托是一种特殊类型的对象
    public delegate string StringDelegate(); // 定义了一个新的对象,委托
  2. 委托中包含的是一个或多个方法的地址
  3. 将方法作为参数进行传递
    StringDelegate del = new StringDelegate(x.ToString);
    Program p = new Program();
    del += p.TestMethod;

del就如同一个指针,指向int类型的ToString方法,并且可以包含一个或多个方法的地址。此时方法作为参数进行传递。

最后,利用委托的实例调用指向的方法。

代码如下:



相关文章

  • C# 委托

    C#委托 C#中的委托(Delegate)类似于C或C++中函数的指针。委托(Delegate)是存有对某个方法的...

  • 教小明学一点点编程—C#篇(0)

    像小明这样使用C#的新同学,一定都会被C#的复杂的委托事件机制所困惑,那么我们不如解释一下什么是C#中委托。 委托...

  • C#委托 匿名函数 Lambda

    C# 中委托的发展#在 C# 1.0 中,通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例。 C#...

  • 2020-02-19

    C# 委托 (一)—— 委托、 泛型委托与Lambda表达式 原创wnvalentin 最后发布于2018-08-...

  • (转).NET面试题系列[7] - 委托与事件

    委托和事件 委托在C#中具有无比重要的地位。 C#中的委托可以说俯拾即是,从LINQ中的lambda表达式到(包括...

  • 委托及其用法

    C#委托使用详解(Delegates) 1. 委托是什么? 其实,我一直思考如何讲解委托,才能把委托说得更透彻。说...

  • C# 高级语言总结

    后续 1 C# 委托 委托(Delegate)特别用于实现事件和回调方法。所有的委托(Delegate)都派生自 ...

  • C#匿名方法、Lambda表达式和各种泛型委托

    Linq查询与高级C#编程机器理论研究基础 C#委托解决的是对象之间的逆向传递问题,其次,委托还有其他的用途(匿名...

  • C#中的委托是用来干嘛的

    在C#中我们会听到一个概念——委托。那么委托是个什么鬼,用来干嘛的呢?最近有些空闲时间就写一下C#中委托相关的知识...

  • C# 基础知识系列- 11 委托和事件

    0. 前言 事件和委托是C#中的高级特性,也是C#中很有意思的一部分。出现事件的地方,必然有委托出现;而委托则不一...

网友评论

    本文标题:C# 委托

    本文链接:https://www.haomeiwen.com/subject/kvhwiqtx.html