zoukankan      html  css  js  c++  java
  • C#中委托的简单使用

    委托在C#中是很重要的一部分,那么什么时候需要用到呢?或者说我们要怎么去理解这个概念呢?

         C#委托可以看做是方法引用,或者叫方法指针,它和c++中使用的函数指针最大的区别就是委托是类型安全的。

        委托声明时必须将方法的返回值和详细的参数列表列出来,这样在为委托指定方法时,可以进行类型安全的检查。

        委托声明的方式如下:

    View Code
    1 public delegate int AddNum(int value);

        由此可见,委托的关键字是delegate,除去这个关键字,其余部分就是一个完整的方法签名的格式,包括了委托返回类型、委托名称和委托所需的详细参数列表。
      委托有几种常见的指定方式

      1. 通过实例化委托对象的方式来指定方法

     

    View Code
    1 public delegate int AddNum(int value);
    2
    3 public int Add(int value)
    4 {
    5 System.Console.WriteLine(value);
    6 return value + 1;
    7 }
    8
    9 //通过实例化的方式来为委托指定方法
    10   AddNum addNum= new AddNum(Add);

    2.通过直接指定的方法来委托指定方法

    View Code
    1 public delegate int AddNum(int value);
    2
    3 public int Add(int value)
    4 {
    5 System.Console.WriteLine(value);
    6 return value + 1;
    7 }
    8
    9 //通过实例化的方式来为委托指定方法
    10   AddNum addHandler =Add;

    3.通过匿名的方法来委托指定的方法

    View Code
    1 public delegate int AddNum(int value);
    2 //通过匿名方法的方式为委托指定方法
    3 AddNum addNum = delegate(int value) { return value + 1; };

    当然,一个委托也可以指定多个方法,当委托指定了多个方法时,那么被它指定的方法会被依次调用

    View Code
    1 public delegate int AddNum(int value);
    2 public int Add(int value)
    3 {
    4 value += 1;
    5 System.Console.WriteLine(value);
    6 return value;
    7 }
    8
    9 public int Add2(int value)
    10 {
    11 value += 2;
    12 System.Console.WriteLine(value);
    13 return value;
    14 }
    15
    16 public void Test()
    17 {
    18 //为委托addHandler指定Add方法
    19 AddNum addNum = Add;
    20 //将Add2方法添加到委托中
    21 addNum += Add2;
    22 addNum(2);
    23 }

    由此可见,   我们可以通过+=操作来为委托添加方法,通过-=操作来为委托去除方法。


    委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。

  • 相关阅读:
    ElasticSearch(7.13.1) 作为服务启动(Windows)
    ElasticSearch(7.13.1) 安装与命令行启动
    Spring Boot 监听器 通过Session监听在线人数
    layui 弹出层icon
    Spring Boot 定时器 系统时间测试
    Spring Boot 拦截器
    Tomcat部署
    SpringBoot学习之整合Swagger
    浅谈Mybatis持久化框架在Spring、SSM、SpringBoot整合的演进及简化过程
    SpringBoot学习之整合Druid的简单应用
  • 原文地址:https://www.cnblogs.com/wsl2011/p/2097121.html
Copyright © 2011-2022 走看看