当前位置:首页 > 科技  > 软件

C# 中的 Action 和 Func 委托

来源: 责编: 时间:2024-05-30 17:16:54 290观看
导读在C#中,Action<T>和Func<T>是两种常用的泛型委托,它们为开发者提供了一种类型安全的方式来定义和处理方法引用。Action<T>和Func<T>的主要区别在于,Action<T>用于封装没有返回值(即返回类型为void)的方法,而Func<T>则用于封

在C#中,Action<T>和Func<T>是两种常用的泛型委托,它们为开发者提供了一种类型安全的方式来定义和处理方法引用。Action<T>和Func<T>的主要区别在于,Action<T>用于封装没有返回值(即返回类型为void)的方法,而Func<T>则用于封装有返回值的方法。zfm28资讯网——每日最新资讯28at.com

zfm28资讯网——每日最新资讯28at.com

Action委托

Action<T>委托用于表示接受特定类型参数并不返回任何值(void)的方法。T在这里是一个占位符,代表委托可以接受的参数类型。Action<T>可以有多个类型参数,比如Action<T1, T2, ...>,最多可以支持16个类型参数。zfm28资讯网——每日最新资讯28at.com

示例代码:zfm28资讯网——每日最新资讯28at.com

using System;class Program{    static void Main()    {        // 定义一个 Action<string> 委托实例,并关联一个方法        Action<string> greet = Greet;                // 调用委托实例        greet("World");    }        static void Greet(string name)    {        Console.WriteLine($"Hello, {name}!");    }}

在这个例子中,我们定义了一个Greet方法,它接受一个字符串参数并不返回任何值。然后,我们创建了一个Action<string>委托实例,并将其关联到Greet方法上。最后,我们通过委托实例调用了Greet方法。zfm28资讯网——每日最新资讯28at.com

Func委托

与Action<T>不同,Func<T>委托用于表示具有返回值的方法。Func<T>的第一个类型参数是输入参数的类型,最后一个类型参数是返回值的类型。例如,Func<int, int>表示接受一个int参数并返回一个int值的方法。zfm28资讯网——每日最新资讯28at.com

示例代码:zfm28资讯网——每日最新资讯28at.com

using System;class Program{    static void Main()    {        // 定义一个 Func<int, int> 委托实例,并关联一个方法        Func<int, int> square = CalculateSquare;                // 调用委托实例并打印结果        int result = square(5);        Console.WriteLine($"The square of 5 is {result}.");    }        static int CalculateSquare(int number)    {        return number * number;    }}

在这个例子中,我们定义了一个CalculateSquare方法,它接受一个整数参数并返回一个整数结果。然后,我们创建了一个Func<int, int>委托实例,并将其关联到CalculateSquare方法上。最后,我们通过委托实例调用了CalculateSquare方法,并打印了结果。zfm28资讯网——每日最新资讯28at.com

总结

Action<T>和Func<T>委托是C#中非常有用的工具,它们提供了一种简洁、类型安全的方式来引用和调用方法。通过使用这些委托,开发者可以更加灵活地编写可重用的代码,并轻松地实现回调函数和事件驱动的设计模式。在实际开发中,根据方法是否有返回值来选择使用Action<T>还是Func<T>委托是非常重要的。zfm28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-91823-0.htmlC# 中的 Action 和 Func 委托

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 十个经典 Python 设计模式解析

下一篇: C语言字符串为什么以/0 作为结束标志?

标签:
  • 热门焦点
  • MIX Fold3包装盒泄露 新机本月登场

    小米的全新折叠屏旗舰MIX Fold3将于本月发布,近日该机的真机包装盒在网上泄露。从图上来看,新的MIX Fold3包装盒在外观设计方面延续了之前的方案,变化不大,这也是目前小米旗舰
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • Mate60手机壳曝光 致敬自己的经典设计

    8月3日消息,今天下午博主数码闲聊站带来了华为Mate60的第三方手机壳图,可以让我们在真机发布之前看看这款华为全新旗舰的大致轮廓。从曝光的图片看,Mate 60背后摄像头面积依然
  • 俄罗斯:将审查iPhone等外国公司设备 保数据安全

    iPhone和特斯拉都属于在各自领域领头羊的品牌,推出的产品也也都是数一数二的,但对于一些国家而言,它们的产品可靠性和安全性还是在限制范围内。近日,俄罗斯联邦通信、信息技术
  • Redmi Pad评测:红米充满野心的一次尝试

    从Note系列到K系列,从蓝牙耳机到笔记本电脑,红米不知不觉之间也已经形成了自己颇有竞争力的产品体系,在中端和次旗舰市场上甚至要比小米新机的表现来得更好,正所谓“大丈夫生居
  • 5月安卓手机好评榜:魅族20 Pro夺冠

    性能榜和性价比榜之后,我们来看最后的安卓手机好评榜,数据来源安兔兔评测,收集时间2023年5月1日至5月31日,仅限国内市场。第一名:魅族20 Pro好评率:97.50%不得不感慨魅族老品牌还
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 从零到英雄:高并发与性能优化的神奇之旅

    作者 | 波哥审校 | 重楼作为公司的架构师或者程序员,你是否曾经为公司的系统在面对高并发和性能瓶颈时感到手足无措或者焦头烂额呢?笔者在出道那会为此是吃尽了苦头的,不过也得
Top