当前位置: 首页 > news >正文

C#的委托Action

在 C# 中,Action 是一个预定义的委托类型,它位于 System 命名空间下。下面详细介绍它的作用和使用方法。

作用

Action 委托的主要作用是封装一个方法,这个方法没有返回值(即返回类型为 void)。它提供了一种简洁的方式来传递方法作为参数,从而实现代码的复用和增强代码的灵活性。使用 Action 可以让你将一段代码逻辑作为参数传递给其他方法,使得这些方法可以在合适的时机执行这段代码。

不同重载形式

Action 有多种重载形式,主要区别在于参数的数量:

  • Action:封装一个不接受任何参数且不返回值的方法。
  • Action<T>:封装一个接受一个参数且不返回值的方法,其中 T 是参数的类型。
  • Action<T1, T2>:封装一个接受两个参数且不返回值的方法,T1 和 T2 分别是两个参数的类型。
  • 以此类推,最多可以有 16 个参数,即 Action<T1, T2, ..., T16>

使用方法

1. 使用 Action(无参数)
using System;

class Program
{
    static void Main()
    {
        // 定义一个 Action 委托实例,指向一个无参数的方法
        Action printMessage = PrintHello;

        // 调用 Action 委托
        printMessage();
    }

    static void PrintHello()
    {
        Console.WriteLine("Hello, World!");
    }
}

在上述代码中,我们定义了一个 Action 委托实例 printMessage,它指向了 PrintHello 方法。然后通过调用 printMessage() 来执行 PrintHello 方法。

2. 使用 Action<T>(一个参数)
using System;

class Program
{
    static void Main()
    {
        // 定义一个 Action<int> 委托实例,指向一个接受一个 int 类型参数的方法
        Action<int> printNumber = PrintValue;

        // 调用 Action 委托并传递参数
        printNumber(42);
    }

    static void PrintValue(int number)
    {
        Console.WriteLine($"The number is: {number}");
    }
}

这里我们使用了 Action<int> 委托,它接受一个 int 类型的参数。printNumber 委托指向了 PrintValue 方法,调用时传递了一个整数参数。

3. 使用匿名方法
using System;

class Program
{
    static void Main()
    {
        // 使用匿名方法创建 Action 委托实例
        Action showMessage = delegate ()
        {
            Console.WriteLine("This is an anonymous method.");
        };

        // 调用 Action 委托
        showMessage();
    }
}

在这个例子中,我们使用匿名方法创建了一个 Action 委托实例,匿名方法没有参数,并且直接在创建委托时定义了要执行的代码。

4. 使用 Lambda 表达式
using System;

class Program
{
    static void Main()
    {
        // 使用 Lambda 表达式创建 Action<int> 委托实例
        Action<int> squareAndPrint = num =>
        {
            int result = num * num;
            Console.WriteLine($"The square of {num} is: {result}");
        };

        // 调用 Action 委托
        squareAndPrint(5);
    }
}

这里我们使用 Lambda 表达式创建了一个 Action<int> 委托实例 squareAndPrint,它接受一个整数参数,计算该参数的平方并输出结果。

5. 将 Action 作为参数传递给其他方法
using System;

class Program
{
    static void Main()
    {
        // 定义一个 Action 委托实例
        Action printInfo = () => Console.WriteLine("This is some information.");

        // 调用 ExecuteAction 方法并传递 Action 委托
        ExecuteAction(printInfo);
    }

    static void ExecuteAction(Action action)
    {
        // 在方法内部调用传递进来的 Action 委托
        action();
    }
}

在这个例子中,我们定义了一个 ExecuteAction 方法,它接受一个 Action 委托作为参数,并在方法内部调用这个委托。这样可以让 ExecuteAction 方法在不同的场景下执行不同的代码逻辑。

相关文章:

  • LabVIEW与雷赛OPC-UA测试
  • 解决VueI18n使用浏览器插件翻译后,切换国际化失效的问题
  • Jupyter notebook的安装与使用
  • 共享内存shm_size和内存锁ulimits.memlock配置
  • Flutter_学习记录_connectivity_plus 检测网络
  • java简单基础学习
  • 利用pprof对golang进行性能分析
  • 图片填充容器,如何描述
  • Flutter 边框按钮:OutlinedButton 完全手册与设计最佳实践
  • Java集成WebSocket实现消息推送,详细步骤以及出现的问题如何解决
  • LeetCode 解题思路 18(Hot 100)
  • ESP32移植Openharmony外设篇(10)inmp441麦克风
  • 【接口耗时】⭐️自定义拦截器实现接口耗时统计
  • 基于消息方式的系统间通信
  • (分块)洛谷 P2801 教主的魔法 题解
  • TimeGAN:开启时间序列生成新纪元,结合GAN与自回归模型的优势
  • 智能运维管理系统的主要优势
  • 基于asp.net实现的连锁餐厅收银系统[包运行成功+永久免费答疑辅导]
  • 4、linux c 进程
  • RK3568 android11 基于PN7160的NXP NFC移植
  • 钟南山谈新冠阳性率升高:可防可治不用慌,高危人群应重点关注
  • 这个东西每道菜里都有,却可能让你得一身病,做好这些能避免
  • 人民日报:不能层层加码,要层层负责
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 河南通报部分未检疫生猪流入:立案查处,涉案猪肉被封存
  • 国家统计局:下阶段要继续发挥宏观政策作用,促进价格合理回升