笔记——C#委托的理解

曾几何时,因为盲目的发布了一篇有错误观点的帖子而让自己不好意思在发帖了,但是我发现不发帖又有些新知识容易忘记。本来准备记在笔记本上的,但是发现携带起来不是很方便。于是决定接着继续写,有错自己就改,不知道错的说不定会有人会帮我提出来,然后自己再改。

好吧说说委托,本来自己对委托这玩意也是挺模糊的,记得课堂上老师是一个注重演示的人:就是把一节课准备讲的知识点全当要实现的功能编一个小程序。这样倒是大家动手能力挺不错的,但是理论理解起来啊实在不敢恭维。半年前就在想弄懂的知识点,结果到最近把C++一下模板编程和泛型编程学了一些才弄明白了。那么什么是委托?

不知道读这篇日记的朋友有没有听说过函数指针(C语言里面的),理解那个就好理解委托了。如果不知道,那么也没关系,笔者尝试用自己拙劣的文章来描述一下。

解释之前先插一下题外话:微软就是财大气粗,一些软件搞了汉化版本。注意这可是原公司开发的汉化版,不是打补丁包的那种。笔者就弄到了一份vs2008的汉化版本,编程起来没有一点问题,就没有出过问题。话题转回来,为什么说这句话?C#被微软进行了汉化研究(暂且这么说吧),因此有一些专业术语如果我们不懂的话可以尝试理解中文意思。委托:比如我们生活中领快递,有一天自己没空,要委托朋友领。这就产生了一次委托。我们领包裹一般要么报手机号要么拿身份证是吧?代码

static void GetPackage(const int Info)
{
    if(Info == PackageTel){
       Console.Writeln("信息核对完成,可以拿走包裹!");
    }else{
      Console.Writeln("信息不正确不能拿走包裹!");
    }
}

 我们可以把它看出是所谓的领包裹过程,你报电话号码,快递员核对,正确了就给你。GetPackage这个动作表示你本人去拿包裹,但是实际上我们委托朋友拿也是可以的下面就是委托来实现了 

delegate void HelpFriendDoSomething(const int Info);
这就是委托,代表你需要委托好朋友拿,但是你需要告诉朋友吧。下面就是你告诉朋友
HelpFriendDoSomething HelpGetpack;//代表朋友同意帮你一个忙
HelpGetpack = new HelpFriendDoSomething(GetPackage);//告诉朋友你需要他帮你取包裹。也就是明确朋友的任务是什么
int YouTelNO=1231234;//你的电话号码给朋友
HelpGetpack(YouTelNO);//他帮你和快递员验证电话号码然后取包裹。

上面的代码在主函数体内执行。明白没有?本来我们在主函数体内要想实现输出“信息核对完成,可以取走包裹!”必须得调用GetPackage函数,但是我们调用的确是HelpGetPack也能得到相同的结果。是不是脑袋里面乱了?别急,先深呼吸几下,然后回想一下我前面说的。委托就是由delegate完成某些函数(例如GetPackage)的功能。也就是说委托就是做一些本来自己可以不用做(或者说不需要做)的事。当然委托不简单的就只会做这一件事,只要delegate声明的返回类型(这里是void)以及参数类型(这里是int)跟你要替代的函数完全一样,delegate就可以完成这些函数的事。这就是类似于函数指针了。我们通过调用delegate达到了调用程序中某些其他函数相同的目的了。

好了初步的委托讲完了,什么?你问委托有什么用?你可以去看别人讲的,你只要懂了什么是委托,那么看委托的作用就简单多了。当然笔者YY一下,我们的C#窗体程序中的事件就是委托。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值