C#中怎么委托
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇文章主要为大家展示了"C#中怎么委托",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中怎么委托"这篇文章吧。一、是什么1)委托包含对方法而不是方法名
千家信息网最后更新 2025年11月08日C#中怎么委托
这篇文章主要为大家展示了"C#中怎么委托",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中怎么委托"这篇文章吧。
一、是什么
1)委托包含对方法而不是方法名称的引用。使用委托可以在运行时动态设定要调用的方法,不知道方法名称,也可以调用方法,执行(或调用)一个委托将执行该委托引用的方法。
2)委托将名称与方法的定义连接起来,即将方法的实现附加到该名称。这样便可以使用该名称调用特定的方法。但是,委托要求方法的实现和委托必须具有相同的方法签名(也就是说,他们应该具有相同数量/类型的参数),并有相同类型的返回值。
3)委托更像一个具有通用的方法名称,在不同的情况将该名称指向不同的方法,并通过委托执行这些方法。
二、怎么用
使用委托包括三个步骤:
1)定义委托
2)实例化委托
3)使用委托
我们上一个例子:
class Program{ //定义一个委托 public delegate int Call(int num1, int num2); class Math { public int Mutiply(int num1, int num2) { return num1 * num2; } public int Divide(int num1, int num2) { return num1 / num2; } } static void Main(string[] args) { Call objCall; Math objMath = new Math(); objCall = new Call(objMath.Mutiply);//实例化一个委托 int result = objCall(5, 3);//使用委托 Console.WriteLine("结果为 {0}", result); }}上面的例子,我们再进一步,用匿名委托实现:
static void Main(string[] args){ Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托 int result = objCall.Invoke(3, 5);//使用委托 Console.WriteLine("结果为 {0}", result);//输出:结果为 15}我们还可以将:
int result = objCall.Invoke(3, 5);//使用委托
替换为:
int result = objCall(3, 5);//使用委托
效果是一样的。
再进一步,用Lambda表达式进行简化,可以将:
Call objCall = delegate(int num1, int num2) { return num1 * num2; };//匿名委托替换为:
Call objCall = (int num1, int num2) => { return num1 * num2; };//Lambda表达式更简化一步,变为:
Call objCall = (num1, num2) => { return num1 * num2; };//Lambda表达式这就是C#委托的进化过程以及C#Lambda表达式对委托的支持。
三、什么时候用
1)委托类似于C语言中的函数指针,可以将方法作为函数的参数进行传递
2)当不知道方法的具体实现时,就可以定义个委托,让它替我们干活
3)我们在编程时用的最多的就是事件注册时使用。
比如:
this.button1.Click += new EventHandler(button1_Click);//button1注册Click事件
private void button1_Click(object sender, EventArgs e){ //方法具体实现内容}可以看到方法button1_Click作为参数传递给了EventHandler委托。
再比如在线程方法中:
Thread th = new Thread(new ThreadStart(Method));//这里的ThreadStart就是一个委托,里面可以直接传一个方法名Method,以委托的形式调用方法th.IsBackground = true;th.Start();
以上是"C#中怎么委托"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
委托
方法
名称
C#
内容
表达式
相同
参数
就是
篇文章
结果
不同
再进一步
事件
例子
函数
实例
类型
学习
帮助
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
gpu服务器组成结构
国家网络安全周开幕式
驾驶证查询为什么是服务器异常
如何进入软件开发
排课系统全文数据库
云服务器安装环境
大学教务系统有没有备份数据库
锐思数据库无法导出数据
海洋生态软件开发
什么是上位机软件开发
亚雷戈斯 服务器
网络安全栅栏技术
为什么数据库连接不上进销存
抖音头像服务器升级
网络安全模式无法联网
安卓手机更换系统更新服务器地址
云从科技互联网入职培训计划
方舟服务器把管理员权限
数据库系统 概念模式
网络安全开幕致辞
galaxy服务器哪个好用
杭州言之城网络技术有限公司
服务器怎么获得别人地皮的权限
ios13服务器登不上
微型数据库 种类
深圳快乐拼客网络技术有限公司
无锡进口软件开发常见问题
jdbc数据库中文显示
百家讲坛视频软件开发
十三水棋牌软件开发