• .NET Framework中自带的泛型委托Action


    Action<>是.NET Framework中自带的泛型委托,可以接收一个或多个输入参数,但不返回任何参数,可传递至多16种不同类型的参数类型。在Linq的一些方法上使用的比较多。

     

    1、Action泛型委托

    .NET Framework为我们提供了多达16个参数的Action委托定义,对于常见的开发场景已经完全够用。

    如下图,

    示例说明:

    Action<>:委托至少0个参数,至多16个参数,无返回值。

    Action:表示无参,无返回值的委托。

    Action :表示有传入参数int,string无返回值的委托。

    Action:表示有传入参数int,string,bool无返回值的委托。

    Action:表示有传入4个int型参数,无返回值的委托。

    2、Action泛型委托的使用

    Action泛型委托的使用方法,可以通过下面代码看一下,

    例如,

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. using System.Threading.Tasks;
    6. namespace ActionDemo
    7. {
    8. class Program
    9. {
    10. static void Main(string[] args)
    11. {
    12. // 无参数无返回值的委托
    13. Action action1 = new Action(ActionWithNoParaNoReturn);
    14. action1();
    15. Console.WriteLine("----------------------------");
    16. // 使用delegate
    17. Action action2 = delegate { Console.WriteLine("使用delegate"); };
    18. // 执行
    19. action2();
    20. Console.WriteLine("----------------------------");
    21. // 使用匿名委托
    22. Action action3 = () => { Console.WriteLine("匿名委托"); };
    23. action3();
    24. Console.WriteLine("----------------------------");
    25. // 有参数无返回值的委托
    26. Action<int> action4 = new Action<int>(ActionWithPara);
    27. action4(11);
    28. Console.WriteLine("----------------------------");
    29. // 使用delegate
    30. Action<int> action5 = delegate (int i) { Console.WriteLine($"使用delegate的委托,参数值是:{i}"); };
    31. action5(22);
    32. Console.WriteLine("----------------------------");
    33. // 使用匿名委托
    34. Action<string> action6 = (string s) => { Console.WriteLine($"使用匿名委托,参数值是:{s}"); };
    35. action6("C#");
    36. Console.WriteLine("----------------------------");
    37. // 多个参数无返回值的委托
    38. Action<int,string> action7 = new Action<int,string>(ActionWithMulitPara);
    39. action7(33, "Java");
    40. Console.WriteLine("----------------------------");
    41. // 使用delegate
    42. Action<int,int,string> action8 = delegate (int i1, int i2, string s)
    43. {
    44. Console.WriteLine($"三个参数的Action委托,参数1的值是:{i1},参数2的值是:{i2},参数3的值是:{s}");
    45. };
    46. action8(44, 55, "Python");
    47. Console.WriteLine("----------------------------");
    48. Action<int,int,string,string> action9 = (int i1,int i2, string s1,string s2) =>
    49. {
    50. Console.WriteLine($"使用四个参数的委托,参数1的值是:{i1},参数2的值是:{i2},参数3的值是:{s1},参数4的值是:{s2}");
    51. };
    52. // 执行委托
    53. action9(66,77, "C","CJavaPy");
    54. Console.ReadKey();
    55. }
    56. static void ActionWithNoParaNoReturn()
    57. {
    58. Console.WriteLine("无参数无返回值的Action委托");
    59. }
    60. static void ActionWithPara(int i)
    61. {
    62. Console.WriteLine($"有参数无返回值的委托,参数值是:{i}");
    63. }
    64. static void ActionWithMulitPara(int i,string s)
    65. {
    66. Console.WriteLine($"有两个参数无返回值的委托,参数1的值是:{i},参数2的值是:{s}");
    67. }
    68. }
    69. }

     

  • 相关阅读:
    qt报错Project ERROR: Cannot run compiler ‘cl‘. Output:
    Vmware: network 相关
    docker部署redis/mongodb/
    【Linux】四、Linux 进程概念(二)|普遍操作系统的进程状态(运行、阻塞、挂起)|Linux的具体进程状态|僵尸进程|孤儿进程
    基础复习——数据库SQLite——SQL的基本语法——数据库管理器SQLiteDatabase——数据库帮助器SQLiteOpenHelper...
    【方向盘】升级到IDEA 2022.1版本后,我把Maven Helper卸载了
    Tomcat架构详解
    【字符串】后缀数组
    Jdk8 时间和日期API介绍
    乌克兰的 IT 外包,为什么如此“发达”?
  • 原文地址:https://blog.csdn.net/lwf3115841/article/details/134256850