委托delegate 泛型委托action<> 返回值泛型委托Func<> 匿名方法 lambda表达式 的理解
1.使用简单委托
namespace 简单委托 { class Program { //委托方法签名 delegate void MyBookDel(int a); //定义委托 static MyBookDel myBookDel; //普通方法 public static void MathBook(int a) { Console.WriteLine("我是数学书" + a); } static void Main(string[] args) { myBookDel += MathBook; myBookDel(3); Console.ReadKey(); } } }
2.Action委托
/// <summary> /// Action委托的优势是在于不用先去定义 方法签名 然后再用,可以直接使用 /// 他把他所支持的参数类型写在了<>里面,所以不需要单独去定义方法签名了 /// 不过Action不支持返回值 /// </summary> namespace Action委托 { class Program { static Action<int> ac; public static void MathBook(int a) { Console.WriteLine("数学" + a); } static void Main(string[] args) { ac += MathBook; ac(6); Console.ReadKey(); } } }
3.Func委托
/// <summary> /// Func委托几乎和Action一样,唯一的区别就是Func支持返回值 /// Func的<>里面的前面的是参数,最后一个值永远代表返回值的类型 /// </summary> namespace Func委托 { class Program { static Func<int, string> func; public static string MyBook(int a) { return "哈哈哈" + a; } static void Main(string[] args) { func += MyBook; Console.WriteLine(func(1)); Console.ReadKey(); } } }
4.匿名方法
/// <summary> /// 匿名方法就是写委托时,不想再单独定义一个方法体,然后再进行+= 的一步操作,直接把方法体写在+= 的后面,这种方法就叫匿名方法 /// </summary> namespace 匿名方法 { class Program { delegate int NiMingDel(int a, int b); static NiMingDel nimingDel; static void Main(string[] args) { nimingDel += delegate (int x, int y) { return x + y; }; //计算1 + 2 Console.WriteLine(nimingDel(1, 2)); Console.ReadKey(); } } }
5.lambda表达式
/// <summary> /// 匿名方法用lambda表达式去代替 /// = (参数) => {方法体} /// </summary> namespace 合体 { class Program { delegate int NiMingDel(int a, int b); static NiMingDel nimingDel; static void Main(string[] args) { //一种语法糖 nimingDel = (x, y) => x + y; //计算1 + 2 Console.WriteLine(nimingDel(1, 2)); Console.ReadKey(); } } }
6.合体
/// <summary> /// Func<> 与 lambda表达式的合体 /// </summary> namespace _6.合体 { class Program { static void Main(string[] args) { Func<int, int, string> func = (x, y) => { return "计算结果是:" + (x + y); }; Console.WriteLine(func(1, 2)); Console.WriteLine("c#牛逼!"); Console.ReadKey(); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~