C#中怎么委托
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要为大家展示了"C#中怎么委托",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"C#中怎么委托"这篇文章吧。一、是什么1)委托包含对方法而不是方法名
千家信息网最后更新 2026年11月02日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安全错误
数据库的锁怎样保障安全
耶加雪菲
蓝思科技飞鸽互联网
美国互联网科技
互联网科技ppt模板
广州凡科互联网科技
融贸通互联网科技
新华互联网科技2019
民营互联网公司国防科技
合肥互联网科技公司公章图片
江苏苏星互联网科技有限公司
皮皮虾互联网科技有限公司
宇信科技在杭州互联网排第几
半导体行业属于互联网高科技类吗
广州燕处互联网科技有限公司
扫呗互联网科技有限公司
广东鹅鹅鹅互联网科技有限公司
悟空问答互联网科技
互联网科技对化妆品行业
数字科技和互联网金融哪个好
每日互联网科技新闻
互联网科技公司
深圳九邦互联网科技有限公司
杭州互联网科技公司
互联网科技商业
互联网行业科技股
每天都有哪些好的互联网科技
互联网时代科技型公司的机会
科技和互联网行业的特点
互联网科技品牌
数字科技和互联网金融哪个好