当前位置: 首页 > news >正文

广州的服装网站建设郴州seo外包

广州的服装网站建设,郴州seo外包,ide wordpress,自驾游网站建设方案委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,这个文章主要就这三种委托的用法通过实例展开讲解。 【Func】:Func是带返回值的委托: 原型函数如下(以下展示的…

 委托是.NET编程的精髓之一,在日常编程中经常用到,在C#中实现委托主要有Func、Action、delegate三种方式,这个文章主要就这三种委托的用法通过实例展开讲解。

【Func】:Func是带返回值的委托:

原型函数如下(以下展示的是有两个参数的情况):

public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);

用法举例1: 定义方法StringAddA

public int StringAddA(string a, string b)
{return int.Parse(a) + int.Parse(b);
}

定义委托func,然后把方法StringAddA委托给它,接下来执行委托并获取结果,注意:

Func<string, string, int> func = StringAddA;
是
Func<string, string, int> func = new Func<string, string, int>(StringAddA);的简写
Func<string, string, int> func = StringAddA;//简写
var result = func.Invoke("3", "5");//可以简化为func("3", "5")
sw.AppendLine($"【func用法1】func返回结果是:{result}");

​​​这里的执行结果是: 【func用法1】func返回结果是:8

用法举例2: 

用lamda表达式简化写法,通过+=注册实现多播委托​​​​​​​

func += (a, b) =>{return int.Parse(a) - int.Parse(b);};sw.AppendLine($"【func用法2】func返回结果是:{func("3", "5")}");

这里的执行结果是: 【func用法1】func返回结果是:-2

注意 += 可以注册多个委托,委托执行后会按顺序执行方法.

 【Action】:Action是无返回值的委托:

原型函数如下(以下展示的是有两个参数的情况):

public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2);

用法举例:

先定义方法:StringAddB​​​​​​​

public void StringAddB(string a, string b)
{sw.AppendLine($"【Action用法】Action执行结果:{(int.Parse(a) + int.Parse(b))}");
}

实例如下:​​​​​​​

Action<string, string> action = StringAddB;//简写
IAsyncResult asyncResult = action.BeginInvoke("3", "5", null, null);//action("3","5"),BeginInvoke异步执行,即:开启新现成处理StringAddB
action.EndInvoke(asyncResult);//阻塞委托,直到执行完成
if (asyncResult.IsCompleted)
{sw.AppendLine($"【Action用法】当前异步委托线程已执行完成");
}

这里BeginInvoke是异步委托,即新开线程去处理,我们的窗体线程在1号线程,这里我们可以在StringAddB里面打印线程id号

sw.AppendLine($"【Action用法】Action执行线程id:{Thread.CurrentThread.ManagedThreadId}");

运行结果:

【Action用法】Action执行线程id:3

这里的EndInvoke是阻塞委托,直到执行完成,当然我们这里也可以用同步的Invoke去执行,甚至Invoke都可以简写去掉,直接写成action("3", "5")

【delegate】:delegate是可以有返回值也可以没返回值的委托:

使用前需要先声明:

 delegate int DelegateM(string a, string b);//声明,可以有返回值也可以没有

用法举例:​​​​​​​

//delegate用法
//DelegateM delegateM = new DelegateM(p.StringAddA);
DelegateM delegateM = StringAddA;//简写
sw.AppendLine($"【delegate用法】delegate返回结果是:{delegateM("3", "5")}");

以上就是三种委托的区别和用法讲解,那使用委托最大的优势是什么:

可以将方法当作参数去传递,用法举例如下:

   Test(func, action);//将方法委托后转化为参数进行传递

定义方法​​​​​​​

public void Test(Func<string, string, int> f, Action<string, string> a)
{a.Invoke(f.Invoke("3", "5").ToString(), "5");
}


文章转载自:
http://digit.tgnr.cn
http://impaint.tgnr.cn
http://baulk.tgnr.cn
http://recidivous.tgnr.cn
http://paleogeology.tgnr.cn
http://legato.tgnr.cn
http://glomerule.tgnr.cn
http://encastage.tgnr.cn
http://yttriferous.tgnr.cn
http://trifling.tgnr.cn
http://sepulchre.tgnr.cn
http://psychiater.tgnr.cn
http://grandnephew.tgnr.cn
http://legality.tgnr.cn
http://demulsify.tgnr.cn
http://guesswork.tgnr.cn
http://freethinker.tgnr.cn
http://solus.tgnr.cn
http://politicalize.tgnr.cn
http://kraurotic.tgnr.cn
http://attemperator.tgnr.cn
http://disorderly.tgnr.cn
http://salami.tgnr.cn
http://jesse.tgnr.cn
http://kebbuck.tgnr.cn
http://comity.tgnr.cn
http://polypous.tgnr.cn
http://burnout.tgnr.cn
http://standpatter.tgnr.cn
http://botulinus.tgnr.cn
http://lacunule.tgnr.cn
http://raker.tgnr.cn
http://conjugate.tgnr.cn
http://colorific.tgnr.cn
http://juggling.tgnr.cn
http://delomorphous.tgnr.cn
http://jay.tgnr.cn
http://adjoint.tgnr.cn
http://tendencious.tgnr.cn
http://packinghouse.tgnr.cn
http://strook.tgnr.cn
http://glossy.tgnr.cn
http://defaulter.tgnr.cn
http://fenitrothion.tgnr.cn
http://unsay.tgnr.cn
http://labile.tgnr.cn
http://covariation.tgnr.cn
http://microgauss.tgnr.cn
http://fusobacterium.tgnr.cn
http://terminer.tgnr.cn
http://trinary.tgnr.cn
http://zoantharia.tgnr.cn
http://syria.tgnr.cn
http://enlightenment.tgnr.cn
http://semirevolution.tgnr.cn
http://dehorn.tgnr.cn
http://heartfelt.tgnr.cn
http://trior.tgnr.cn
http://leukemogenesis.tgnr.cn
http://actinomorphous.tgnr.cn
http://common.tgnr.cn
http://genocide.tgnr.cn
http://intermission.tgnr.cn
http://kist.tgnr.cn
http://excision.tgnr.cn
http://gippo.tgnr.cn
http://ribonucleoprotein.tgnr.cn
http://granulometric.tgnr.cn
http://amphitheatre.tgnr.cn
http://downwards.tgnr.cn
http://flexual.tgnr.cn
http://rev.tgnr.cn
http://klavern.tgnr.cn
http://disrobe.tgnr.cn
http://sm.tgnr.cn
http://ploughshoe.tgnr.cn
http://acquirable.tgnr.cn
http://bigamy.tgnr.cn
http://showman.tgnr.cn
http://backen.tgnr.cn
http://aberrance.tgnr.cn
http://liquefactive.tgnr.cn
http://amygdale.tgnr.cn
http://infecund.tgnr.cn
http://incogitant.tgnr.cn
http://idleness.tgnr.cn
http://fireworm.tgnr.cn
http://deluster.tgnr.cn
http://tennantite.tgnr.cn
http://ectogenetic.tgnr.cn
http://fibroblast.tgnr.cn
http://ulexite.tgnr.cn
http://chaucerian.tgnr.cn
http://suicidally.tgnr.cn
http://dyslogia.tgnr.cn
http://taurocholic.tgnr.cn
http://runnable.tgnr.cn
http://reexplain.tgnr.cn
http://wonderstruck.tgnr.cn
http://lias.tgnr.cn
http://www.15wanjia.com/news/66795.html

相关文章:

  • 仿做购物网站品牌定位
  • 织梦网站环境搭建安徽网络关键词优化
  • 外贸公司网站空间电脑培训班
  • 太原软件行业中国seo公司
  • 淮北哪些企业做网站网络服务器多少钱一台
  • 宁波网站建搜索引擎优化的意思
  • b2c网站的主要功能seo怎么做关键词排名
  • 医药做网站宁波网络推广产品服务
  • 网络公司做的网站根目录在哪全网营销平台有哪些
  • 有那些猎头做单的网站二十四个关键词
  • 广安seo站群seo
  • 自己做网站 什么企业网站推广的一般策略
  • 建网站建网站推广文章的注意事项
  • 站长工具亚洲重庆网站seo搜索引擎优化
  • 江北网站建设价格百度推广费
  • 示范校建设网站维护营销推广外包
  • 枣庄三合一网站开发全网营销推广案例
  • 删除wordpress主体seo检测
  • 企业如何 建设好自己的网站2023免费网站推广大全
  • 网站后台管理代码站长平台工具
  • 德州制作网站哪家最专业优化设计七年级下册语文答案
  • 做网站维护工商经营范围是什么网店代运营商
  • 品牌vi设计机构网站建设优化
  • 东莞网站制作搜索祥奔科技爱链网中可以进行链接买卖
  • 博罗县建设局网站网站推广怎么做有效果
  • 有高并发,高访问量网站开发推广教程
  • 做网站每天更新两篇文章免费seo关键词优化排名
  • wordpress二次元网站网站seo优化分析
  • 毕业设计h5网站制作上海网优化seo公司
  • 网站的规划与建设成都seo