开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 28032|回复: 9
收起左侧

[C#源码] 关于委托和事件的例子,希望大佬给萌新指点指点

[复制链接]
结帖率:0% (0/1)
发表于 2018-11-22 21:03:47 | 显示全部楼层 |阅读模式   江西省南昌市
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;

  6. namespace 委托和事件练习
  7. {

  8.     public delegate void MyDele(string name);//申明委托
  9.     class easy
  10.     {
  11.         
  12.         public event MyDele MyEvent;//申明事件
  13.         

  14.         public void sl (string name,MyDele m1)//调用委托
  15.     {
  16.         m1(name);
  17.     }

  18.         public void s2(string name)//调用事件
  19.         {
  20.             MyEvent(name);

  21.         }
  22.         public void Myname(string name)//功能
  23.         {
  24.             Console.WriteLine("早上好,"+name);
  25.         }
  26.    
  27.     }


  28.     class Program
  29.     {
  30.         static void Main(string[] args)
  31.         {
  32.             string name = "张三";//申明变量

  33.              easy cl = new easy();//实例化类

  34.              MyDele m = cl.Myname;//实例化委托对象

  35.              cl.MyEvent += m;//为事件zc委托

  36.              cl.s2(name);//引用事件

  37.              cl.sl(name, m);//引用委托
  38.              Console.ReadKey();
  39.             
  40.             

  41.         }
  42.     }
  43. }
复制代码


结帖率:82% (9/11)

签到天数: 16 天

发表于 2021-11-16 22:44:18 | 显示全部楼层   辽宁省丹东市
谢谢 谢谢
回复 支持 反对

使用道具 举报

发表于 2020-4-8 10:47:07 | 显示全部楼层   山东省青岛市
事件五部分, 分清楚了  拥有者  响应者, 事件本身, 事件监听程序, 事件zc。 然后你就会豁然开朗。
事件 说白了就是 对 委托属性的封装。
回复 支持 反对

使用道具 举报

结帖率:100% (4/4)
发表于 2020-3-22 02:29:59 高大上手机用户 | 显示全部楼层   广西壮族自治区贺州市
dyyhf123 发表于 2019-3-22 21:10
委托和事件  
1、首先 net团队为了实现一些类似于函数指针的通用的功能,经过各个应用场景的需求 创建了 委 ...

大佬说的详细,精致可以多看看
回复 支持 反对

使用道具 举报

发表于 2019-3-22 21:10:59 | 显示全部楼层   山东省滨州市
委托和事件  
1、首先 net团队为了实现一些类似于函数指针的通用的功能,经过各个应用场景的需求 创建了 委托这个东西,

2、事件是对委托进一步具体化,其实事件也是委托  只是 事件对委托提出了更具体的规范,所以委托和事件 在功能上有很大的重叠。

3、委托就像函数指针 你可以把一个函数进行传递 你也可以写个方法 方法的参数 是个委托  这样调用方法时可以传入一个函数作为参数,委托往往又返回值或数据更改,
4、 事件相对于委托的不同  在于  事件往往是多播的  事件 不需要返回任何值  事件可以被订阅 也可以不被订阅  ,也就是说事件只是发出一个通知,事件的处理程序还是一个委托  但是这个事件 你可以处理 也可以不处理 总之是事件发生了 你管与不管程序还在继续下一步操作,事件在 wpf winfrom 这些程序中被应用,事件的一般格式 是 无返回值 有两个参数 一个是 事件触发者 类一个参数是 事件参数
5、 委托相对于事件的不同,委托往往需要你返回一个值,委托单播的比较多,委托往往不能为空,也就是说委托就是交给调用程序去做某件事情,而且需要委托返回一个处理结果,委托的应用 在 ef实体框架里面 linqcha询方法 里面被广泛应用
回复 支持 反对

使用道具 举报

结帖率:17% (2/12)

签到天数: 1 天

发表于 2019-1-15 16:56:53 | 显示全部楼层   江苏省苏州市
但是要扣10个精币,有点坑
回复 支持 反对

使用道具 举报

结帖率:17% (2/12)

签到天数: 1 天

发表于 2019-1-15 16:56:31 | 显示全部楼层   江苏省苏州市
到定制区找大神
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
 楼主| 发表于 2018-11-25 14:34:32 | 显示全部楼层   江西省南昌市
malei1194627023 发表于 2018-11-24 13:16
事件:什么时候触发什么事,比如winform 的点击事件 典型
委托:把方法当做参数传递
比如现在有个要求是排序 ...

谢谢大佬,
回复 支持 反对

使用道具 举报

发表于 2018-11-24 16:26:14 | 显示全部楼层   江苏省苏州市
多找几个例子看看,晚上发个例子看看。
回复 支持 反对

使用道具 举报

结帖率:64% (21/33)
发表于 2018-11-24 13:16:32 | 显示全部楼层   广东省广州市
事件:什么时候触发什么事,比如winform 的点击事件 典型
委托:把方法当做参数传递
比如现在有个要求是排序,排序这个范围就大了,可以是按照整数大小排序,从小到大排序,从大到小排序,可以是按照字符串长度排序,说来说出 排序规则没有确定的,这时候就可以写个委托,把排序方法传递过去,排序方法完全自定义的,只要匹配这个委托就行,这样的话 这个排序就很灵活了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表