C#中怎么委托
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要为大家展示了"C#中怎么委托",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中怎么委托"这篇文章吧。一、是什么1)委托包含对方法而不是方法名
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
手机 服务器
软件开发工程湖南岚鸿
和网络安全有关的电视剧
网络安全法主题宣传
服务器端渲染框架
网络安全宣传宣传栏
死亡空间3正版连不了ea服务器
加密认证是网络安全措施
江苏正规软件开发销售厂
中国互联网有什么科技
东方天 网络技术有限公司
服务器引导设备管理器
服务器 平均功率
水果软件开发公司
安卓 数据库 登陆失败
数据库课程思政论文
常见软件开发面试技术问题
浙江系统软件开发机构
商品分类表 数据库
数据库sql 经典教材
oracle数据库怎么连接池
数据仓库就是数据库技术
什么是监控服务器
临沂芮豪网络技术有限公司
爱瑞思软件开发公司
.bak 还原数据库
请简述网络安全的威胁
为什么服务器关闭后没有属性了
黑龙江gps卫星授时服务器
公司无线网络安全通知