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

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 方法在不同的场景下执行不同的代码逻辑。


http://www.kler.cn/a/589103.html

相关文章:

  • CSS Table (表格)
  • 批量将多个 Excel 合并成单个文件|批量按文件夹合并 Excel
  • 【Go | 从0实现简单分布式缓存】-7:增加etcd和gRPC功能
  • 【MySQL篇】MySQL内置函数
  • 复现代码常出现的一些报错(pruning)
  • 新型XCSSET恶意软件利用增强混淆技术攻击macOS用户
  • React Vue 项开发中组件封装原则及注意事项
  • 【NLP】7. 自然语言处理 (NLP) 的关键要素
  • 2025年渗透测试面试题总结-某一线实验室实习(题目+回答)
  • 时间序列预测(十九)——卷积神经网络(CNN)在时间序列中的应用
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加列宽调整功能,示例Table14_13可展开行的固定表头表格
  • MongoDB中的游标(Cursor)
  • (性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化
  • 【Ratis】项目总览
  • ICLR2025 | SLMRec: 重新思考大语言模型在推荐系统中的价值
  • python爬虫Scrapy(6)之增量式
  • [c语言日寄]浮点数的排序
  • go~context的Value的建议写法
  • PyTorch 系列教程:使用CNN实现图像分类
  • 设计模式使用Java案例