c#中的泛型、委托、泛型委托、Action和Func及使用场景系列之四:泛型委托及系统内置Action和Func介绍(完结篇)
一、泛型委托
如果将委托中的参数定义成泛型即是泛型委托,代码如下:
1 //带1个参数的泛型委托 2 public delegate string MyGenericDelegate1<T1>(T1 code, string msg); 3 4 //带2个参数的泛型委托,T1是方法的形参类型, TR是方法返回值类型 5 public delegate TR MyGenericDelegate2<T1, TR>(T1 code, string msg); 6 7 public class Class33 8 { 9 public void Test1() 10 { 11 MyGenericDelegate1<string> d1; 12 d1 = Class6.NotifyJson; 13 d1.Invoke("100","SUCCESS"); //用Invoke方法调用 14 15 MyGenericDelegate2<string, string> d21;//第2个string是返回值类型 16 d21 = Class6.NotifyXml; 17 d21("100", "SUCCESS"); //用委托变量调用 18 19 MyGenericDelegate2<int, string> d22;//第2个string是返回值类型 20 d22 = Class6.NotifyXml2; 21 d22(100, "SUCCESS"); //用委托变量调用 22 } 23 }
在声明委托变量的时候必须指定类型,调用的时候传入的实参类型必须和声明时一致。
二、C#内置的三个泛型委托Action、Func、Predicate
为了便于我们使用委托,C#内置了3个泛型委托,这3个泛型委托的区别如下:
名称 | 定义 | 形参数量 | 返回值类型 |
Action | Action<T1, T2, T3, T4, T5 ...> | 0-16个 | void |
Func | Func<T1, T2, T3, T4, T5 ..., TR> | 0-16个 | 泛型TR |
Predicate | Predicate<T> | 1个 | bool |
有了这3个内置的泛型委托,不需要自己去定义就可以满足我们绝大部分使用委托的场景了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人