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# 委托

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