• 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 }

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


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

  • 相关阅读:
    我的java学习之路--Reflect专题
    jQuery——动态给表格添加序号
    jQuery操作表格(table)的常用方法、技巧汇总
    Jquery如何删除table里面checkbox选中的多个行
    Mybatis问题:There is no getter for property named 'unitId' in 'class java.lang.String'
    jquery 遍历表格,需要表格中每个td的内容
    用jquery怎么删除<table>的一行
    xml报错 Parse Fatal Error :在实体引用中,实体名称必须紧跟在'&'后面
    mybatis做like模糊查询
    javascript eval和JSON之间的联系
  • 原文地址:https://www.cnblogs.com/wsl2011/p/2097121.html
Copyright © 2020-2023  润新知