C#学习笔记:Action与Func委托详解
需积分: 9 12 浏览量
更新于2024-07-20
收藏 1.25MB PDF 举报
"C#知识要点,包括Action<T>和Func<T>委托以及普通委托的使用"
在C#编程语言中,委托是一种强大的工具,它允许我们传递方法作为参数或者存储方法以便稍后执行。Action<T>和Func<T>是.NET框架中预定义的泛型委托类型,它们极大地简化了对方法的处理,尤其是在处理事件和实现回调机制时。
1. Action<T>委托:
- Action<T>代表了一个没有返回值(void)的方法,接收一个或多个参数。例如,Action<int>可以用于调用一个接受int类型参数但不返回任何值的方法。Action有多个重载版本,最多可以支持16个不同的参数类型,如Action<in T1, in T2, ..., in T16>,每个T1, T2, ... 分别对应不同的参数类型。
2. Func<T>委托:
- Func<T>与Action<T>类似,但其区别在于Func<T>的委托方法具有返回值。例如,Func<int, string>可以用来调用一个接受int类型参数并返回string类型值的方法。Func<T>同样有多重重载,最大可以支持16个参数加上一个返回类型,如Func<in T1, in T2, ..., in T16, out TResult>,其中TResult代表返回类型。
3. 普通委托:
- 在C#中,我们可以自定义委托类型,比如上面示例中的`ConvertMethod`,来表示特定签名的方法。在示例中,`ConvertMethod`委托被用来引用`UppercaseString`方法,该方法接受一个string参数并返回一个string。通过创建委托实例,我们可以将方法绑定到委托上,并通过委托实例来调用方法,就像在`Main`方法中那样。
4. `Func<in T, out TResult>`的使用:
- `Func<in T, out TResult>`是Func委托的一个具体实例,其中`in T`表示输入参数类型,`out TResult`表示返回结果类型。这使得我们可以更灵活地创建和使用委托,例如在上面的代码片段中,我们创建了一个`Func<string, string>`类型的委托实例`convertMethod`,并将其赋值为`UppercaseString`方法,这样我们就可以利用委托来调用这个转换方法。
5. 泛型委托的优势:
- 泛型委托提供了更高的代码复用性,因为它们可以适应多种方法签名,而不必为每种情况创建新的委托类型。
- 它们简化了代码,减少了类型转换的需要,因为编译器可以在编译时检查类型匹配。
- 由于泛型委托是类型安全的,因此可以避免运行时错误。
理解和熟练运用Action<T>和Func<T>对于C#开发者来说至关重要,它们是构建高度灵活和可扩展的代码的基础。同时,了解如何定义和使用普通委托也是C#编程的重要部分,特别是当预定义的委托无法满足需求时。在实际开发中,这些概念常常应用于事件处理、异步操作以及函数式编程等场景。
2021-01-17 上传
2009-01-03 上传
2024-01-04 上传
2023-05-20 上传
2023-06-08 上传
2023-05-17 上传
2023-07-23 上传
2023-06-08 上传
wildwolf888xuwei
- 粉丝: 0
- 资源: 16
最新资源
- zlib-1.2.12压缩包解析与技术要点
- 微信小程序滑动选项卡源码模版发布
- Unity虚拟人物唇同步插件Oculus Lipsync介绍
- Nginx 1.18.0版本WinSW自动安装与管理指南
- Java Swing和JDBC实现的ATM系统源码解析
- 掌握Spark Streaming与Maven集成的分布式大数据处理
- 深入学习推荐系统:教程、案例与项目实践
- Web开发者必备的取色工具软件介绍
- C语言实现李春葆数据结构实验程序
- 超市管理系统开发:asp+SQL Server 2005实战
- Redis伪集群搭建教程与实践
- 掌握网络活动细节:Wireshark v3.6.3网络嗅探工具详解
- 全面掌握美赛:建模、分析与编程实现教程
- Java图书馆系统完整项目源码及SQL文件解析
- PCtoLCD2002软件:高效图片和字符取模转换
- Java开发的体育赛事在线购票系统源码分析