`
totoxian
  • 浏览: 1074080 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

我终于用到了委托

阅读更多

我终于用到了委托

左直拳

NET带来了一些新的东西,其中委托是一个。

我总觉得委托很神秘,比较难理解。看帮助,查资料,不是语焉不详,就是故弄玄虚,越看越糊涂。有时候,真有点怀疑网上写文章的这些人自己是否真的弄清楚了。

后来编码的时候用到了一下,总算有了点认识。一言以蔽之,委托的作用是使得函数可以当作参数和变量来使用。(今天又查了一下帮助,里面说委托作用类似于“ C++ 中函数指针”,因为我对函数指针不熟,所以,惭愧,怪不得之前不明白)。不过这个函数,其返回值、参数都要跟委托声明的一致才行。就好象螺丝孔,不是所有的螺丝钉都能拧进去,要尺寸大小合适才可以。

定义和使用委托分三个步骤:声明、实例化和调用。举例说明。

假设我们要写一段代码,实现“见人说人话尽人事,见鬼说鬼话怀鬼胎”的功能,怎么办呢?

先实现说话和做事函数。

void SpeakAsHuman() {}//有一说一,说出人话

void SpeakAsGhost{}//经过大脑复杂运算,说出鬼话

void DoAsHuman(){};//尽人事

void DoAsGhost(){};//怀鬼胎

然后使用委托来引用这些函数

//声明一个委托

delegate void myDelegate();

//构造两个委托实例

myDelegate dlSpeak = null; //说话

myDelegate dlDo = null; //做事

//调用

switch( 遇见谁?)

{

case 人:

//看,函数作为参数或对象用于赋值

//这跟平常构造一个变量有什么不同?如 StringBuilder str = new StringBuilder("Hello World!");

dlSpeak = new myDelegate(SpeakAsHuman);

dlDo =new myDelegate(DoAsHuman);

break;

case :

dlSpeak = new myDelegate(SpeakAsGhost);

dlDo =new myDelegate(DoAsGhost);

break;

default:

break;

}

这样子处理后,dlSpeak,dlDo在见人或见鬼时,就会有不同的内涵,说话按扭cmdSpeak和做事按扭cmdDoOnClick事件就容易处理多了:

//点击了说话按扭

private void cmdSpeak_Click(object sender, System.EventArgs e)

{

dlSpeak();

}

//点击了做事按扭

private void cmdDo_Click(object sender, System.EventArgs e)

{

dlDo();

}

可以看见,代码比较简洁,逻辑上也更分明了。对于说话按扭和做事按扭来讲,什么都可以不理会,只须说和做就行,至于说什么,做什么,都已经预先定好。并且这个预先定好不是在开发阶段来设定,而是在运行阶段自行设定,多棒。

假如没有用委托,说话按扭cmdSpeak和做事按扭cmdDoOnClick事件中肯定要各判断一次,如下:

//点击了说话按扭

private void cmdSpeak_Click(object sender, System.EventArgs e)

{

//调用

switch( 遇见谁?)

{

case 人:

SpeakAsHuman();

break;

case :

SpeakAsGhost();

break;

default:

break;

}

}

//点击了做事按扭

private void cmdDo_Click(object sender, System.EventArgs e)

{

switch(……

}

上面的代码如果分开,说话及做事定义在一个类文件里,而按扭放在一个页面上,可以想见,利用委托,能够屏蔽许多细节,实现很好的封装性。

委托,也许可以理解为“函数的代理”?

分享到:
评论

相关推荐

    QT中级(2)QTableView自定义委托(二)实现QProgressBar委托

    # 2 需要用到的部分知识 [《QT(3)-QTableView》](https://blog.csdn.net/qq_40666149/article/details/128215699) [《QT(4)-QAbstractItemView》](https://blog.csdn.net/qq_40666149/article/details/128235025) ...

    单播委托.pdf

    网络框架中的消息中心也需要用到委托,以便在接收到消息时调用相应的处理方法。随着虚拟现实(VR)技术的发展,委托在如VRTK这样的VR开发工具包中也扮演着重要角色,用于在虚拟环境中的事件处理和对象交互。 接下来...

    关于委托的例子

    例如,Windows Forms或WPF中的控件事件(如按钮点击)通常会用到委托。当事件发生时,控件会触发关联的委托,执行所有已注册的事件处理程序: ```csharp button.Click += new EventHandler(Button_Click); private...

    委托事件PPT课件.pptx

    创建委托实例需要用到`new`关键字,指定一个与委托类型匹配的方法。如: ```csharp ProcessAnything pa = new ProcessAnything(SomeMethod); ``` 这里的`SomeMethod`必须与`ProcessAnything`的签名相匹配。委托有...

    1_2_委托书 - sz.docx

    《授权委托书》是法律事务中常见的...例如,在签署软件开发合同、处理数据隐私争议或授权第三方维护IT系统时,都需要用到此类文件。因此,IT专业人员应当熟悉授权委托书的基本格式和内容,以便在需要时能有效地运用。

    C#事件与委托实例Demo源代码

    例如,在Web控件之间进行交互、处理用户输入或响应页面生命周期事件时,都会用到它们。在.NET框架中,控件如Button、TextBox等都提供了大量的事件,如Click事件,我们可以通过添加事件处理程序来响应这些事件: ```...

    委托书模板打印出来直接填写

    在IT行业中,虽然不像技术文档那样常见,但在组织内部的项目管理、合同签署或其他需要代表他人行动的情况下,委托书可能会被用到。下面将详细介绍委托书的构成要素、用途及注意事项。 一、委托书的基本结构 1. ...

    授权委托书3篇.docx

    在IT行业的具体场景中,例如,当一家软件开发公司需要授权给合作伙伴使用其软件技术,或者一个项目经理需要临时授权团队成员处理特定任务时,都会用到授权委托书。通过这样的文书,可以确保业务流程的顺利进行,同时...

    公司委托书范本5篇.doc

    【公司委托书】是企业在日常运营中经常需要用到的法律文件,主要用于当企业需要授权某位员工代表公司处理特定事务时。以下是对公司委托书主要内容的详细解释: 1. **委托人**:通常为企业法定代表人或者拥有相应...

    代领驾驶证委托书.doc

    在驾驶相关的事务中,有时由于各种原因,个人无法亲自处理,这时就可能需要用到“代领驾驶证委托书”。这个文档主要用于授权他人代表自己领取驾驶证。以下是关于这个主题的详细解释: 1. **委托书定义**:委托书是...

    C#委托,可测试,运行

    例如,Windows Forms或WPF应用程序中,我们常常会用到`EventHandler<TEventArgs>`这样的委托来处理控件的事件,如按钮点击事件: ```csharp button.Click += new EventHandler(button_Click); ``` 在这里,`button...

    个人授权委托书格式模板.pdf

    在处理如申报债权、办理房产交易、医疗事务等重要事宜时,都需要用到此类文书。因此,公民应当熟悉基本的法律知识,确保自己的权益不被侵犯。同时,如果涉及复杂的法律事务,建议寻求专业律师的帮助,以确保委托书的...

    用C#写的WinForm桌面小程序---考试倒计时,用到了序列化反序列化和窗体之委托传值源码

    要准备软考的学习了,用C#写的WinForm桌面小程序,计算倒计时提醒自己.也可用于阻击疫情居家隔离...1.小程序用到了窗体间传值的两种方法:构造函数传值 ,委托传值 ,值得初学者学习 2.用到了序列化和反序列化持久化数据

    最新公司委托授权书委托授权书范本WORD样篇可编辑.docx

    《最新公司委托授权书》是企业在日常运营中经常需要用到的重要法律文件,主要用于授权他人代表公司进行特定事务的处理。在企业运营中,由于各种原因,法定代表人或负责人可能无法亲自处理某些事务,此时就需要出具...

    授权委托书范本模板大全.doc

    当公司需要与其他组织签订合同、处理财务事务或者参与投标活动时,都需要用到授权委托书。正确填写和使用授权委托书,能够保护公司的权益,避免因未经授权的行动而产生的风险。同时,对于受托人而言,理解自己的权限...

    刻章委托书.doc

    对于IT公司的合同管理、项目合作、财务往来等,都需要用到印章。因此,制定严谨的印章管理制度是必要的,这包括: 1. **印章保管**:印章应由专人妥善保管,防止丢失或滥用。 2. **使用审批**:每次使用印章前,需...

    参考资料-授权委托书(公民个人用).zip

    授权委托书是公民个人在日常生活中常常需要用到的一种法律文件,尤其在处理无法亲自到场或不便亲自处理的事务时。此压缩包文件“参考资料-授权委托书(公民个人用).zip”包含了一份“授权委托书(公民个人用).docx...

    纳税人办税授权委托书(填写完整并加盖公章).pdf

    《纳税人办税授权委托书》是企业在日常税务管理中经常需要用到的重要文件,它涉及到企业对税务事务的管理和法律责任的承担。下面将详细解释这个文件的关键内容及其重要性。 首先,纳税人声明部分,企业需确认表中所...

    C# 实现每日、每小时自我总结小软件。附带邮件提醒功能,让亲人朋友监督。主要用到xml操作和事件委托。

    主要用到xml操作和事件委托。 主要功能: 1、开启即启动显示昨天总结内容,并发送短信给亲友,另其监督 2、每一小时自动弹窗置顶,让你写这一小时的工作学习内容。 3、有周总结和月总结导出功能 4、用xml文件模拟...

    有关委托书合同三篇.docx

    在IT行业中,尽管技术本身并不直接涉及委托书合同,但合同的管理和签署过程可能需要用到电子签名、合同管理系统等技术工具,这在企业信息化和数字化进程中是不可或缺的。 在提供的三篇委托书合同中,我们能看到以下...

Global site tag (gtag.js) - Google Analytics