委托
1、概念:
委托可以看成是一个函数的“容器”,将某一具体的函数“装入”后,就可以把它当成函数一样使用。委托变量可看成是一种类型安全的函数指针,它只能接收符合其要求的函数地址。
2、定义方法:delegate关键字。例:
public delegate int MyDele(int a, int b);
3、利用委托调用函数
1)首先定义一个类,里面写几个方法:
class Class1 { public int Jiafa(int a, int b) { return a + b; } public int Jianfa(int a, int b) { return a - b; }
}
2)通过委托调用函数:
MyDele m ; //定义一个已有委托类型的变量 m = new Class1().Jiafa; //给上面的变量赋值 Console.WriteLine(m(1,2));//结果为3 m = new Class1().Jianfa; Console.WriteLine(m(1,2));//结果为-1
4、注意:一个委托类型的变量,可以引用任何一个满足其要求的函数。
5、委托的扩展:
1)特殊的委托泛型集合,匿名委托
Func<string, string> myfunc = new Class1().ReturnString;//输入string,输出string Console.WriteLine(myfunc("张三"));
2)直接写方法
Func<string, string> newfunc = delegate(string s) { return s + "world!"; }; Console.WriteLine(newfunc("李四"));
3)lambda方法简易版1、用s=>代替delegate(string s)
Func<string, string> newfunc1 = s=> { return s + "world!"; };
4)lambda方法简易版2、两个参数
Func<string, string,string> newfunc2 = (s1,s2) => { return s1 + "world!"+s2; };
5)lambda方法简易版2、去掉大括号,直接写方法
Func<string, string,string> newfunc3 = (s1, s2) =>s1+"world!"+s2;
Console.ReadLine();
分类:
C#面向对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?