由winform来看action与delegate的区别


 1 private void button1_Click(object sender, EventArgs e)
2 {
3 Form2 f = new Form2();
4 //第一点:简洁
5 //action and lambda
6 f.alEmethod += (s => this.textBox1.Text = s);
7 //delegate and method
8 f.dmEmethod += delegate(String s){this.textBox1.Text = s;};
9 f.ShowDialog();
10 }

在第一个窗口添加一个按钮并添加点击监听


 1 public partial class Form2 : Form
2 {
3 //第二点:复杂,冗余
4 //使用Action和Lamdba
5 public event Action<String> alEmethod;
6
7 //使用自定义delegate和method
8 public delegate void ChangeTextDelegate(String s);
9 public event ChangeTextDelegate dmEmethod;
10
11 public Form2()
12 {
13 InitializeComponent();
14 }
15      // action 按钮
16 private void button1_Click(object sender, EventArgs e)
17 {
18 if(alEmethod!=null){
19 alEmethod(this.textBox1.Text);
20 }
21 }
22      // delegate 按钮
23 private void button2_Click(object sender, EventArgs e)
24 {
25 if(dmEmethod!=null){
26 alEmethod(this.textBox1.Text);
27 }
28 }
29 }

很明显了,使用lambda+系统委托更优美

时间: 2024-10-09 20:52:54

由winform来看action与delegate的区别的相关文章

C#中Action与delegate、EventHandler的差异

Action是一个泛型的委托,其内部即使用delegate去实现,当普通的delegate定义的参数与Action个数.类型一致时,两者实现的功能是一样的.只是Action的方式更加简洁.规范.如下: 1 public delegate void DoDelegate(object parm); 2 public DoDelegate DoMethod; 3 4 public Action<object> doAction4OneParm; 5 public Action<object,

C#中Action和Func的区别

本文实例分析了C#中Action和Func的区别,有助于读者牢固掌握并对其准确使用.具体分析如下: 先来看下面这段代码: //测试使用的公共值 int num = 10; //测试Func委托 Func<int, int> f; f = (int tempf) => { return tempf + 1; }; Response.Write(f(num).ToString()+"<br />"); //调用f委托,并打印相应的值! //测试Action委托

phpcms v9中 action=&quot;position&quot; 和action=&quot;lists&quot;有什么区别, 以及action 的属性和值

action值的含义: lists 内容数据(文章?)列表 relation 内容相关文章 hits 内容数据点击排行榜 category 内容栏目列表 position 内容推荐位列表 phpcms v9中 action="position" 和action="lists"有什么区别, 以及action 的属性和值,布布扣,bubuko.com

jQuery中的bind() live() delegate()之间区别分析

jQuery中的bind() live() delegate()之间区别分析 首先,你得要了解我们的事件冒泡(事件传播)的概念,我先看一张图 1.bind方式 $('a').bind('click',function (){ alert('click'); }) 解析:这种方式最简单,jq扫描文档找出所有的a,让将函数绑定到每个元素的click事件上 2.live方式 $('a').live('click',function (){ alert('click'); }) 解析:jq将函数绑定到$

JSF之Action 与ActionListener的区别

 事件  检验  参数  事件产生  页面跳转  Action  有 无参数,不传入当前控件,有返回值    当铵钮被单击时产生事件.提交表单   返回页面---根据配置文件跳转  ActionListener   有  传入当前控件,无返回值   当铵钮被单击时产生事件.提交表单   返回本页面  ValueChangeListener    有   传入当前控件,无返回值   不提交表单(需指定其onchange/onclick="submit"才自动提交表单  返回本页面   a

[C#-2] delegate和Delegate的区别

问题:delegate和Delegate的区别 分析: 相信很多朋友开发过程中都遇到过上述疑问,为了解开这个疑问,最近查阅了不少帖子,最终在msdn的官方文档找到了答案. 下面是delegate和Delegate的官方文档链接地址 delegate:https://msdn.microsoft.com/zh-cn/library/ms173171.aspx Delegate:https://msdn.microsoft.com/zh-cn/library/system.delegate(v=vs

JSF Action 与ActionListener的区别

JSF Action 与ActionListener的区别 标签: 杂谈    事件  检验  参数  事件产生  页面跳转  Action  有 无参数,不传入当前控件,有返回值    当铵钮被单击时产生事件.提交表单   返回页面---根据配置文件跳转  ActionListener   有  传入当前控件,无返回值   当铵钮被单击时产生事件.提交表单   返回本页面  ValueChangeListener    有   传入当前控件,无返回值   不提交表单(需指定其onchange/

关于jquery中的bind()、live()、delegate()的区别分析浅析

近来在研究JS的时候,小码哥又一次看到jquery中常见的几种绑定事件的方法:bind(),live(),delegate().因此,闲来无事,想把他们几个做一下系统的分析,一遍后面的码农们能够一起分享! 先说好,鄙人也算是JS的初学者,很复杂的模块啥的,也是略懂而已,要是有码神看到,可别Ma我哈!! 那好,下面就直接进入主题了~ 首先,分别介绍一下这三个方法: 1.bind()--$(selector).bind(event,data,function);     event 为必需,规定添加

KVC、KVO、NSNotification、delegate 的区别,对公司新人的解答

delegate 的 优势 : 1.非常严格的语法.所有将听到的事件必须是在delegate协议中有清晰的定义. 2.如果delegate中的一个方法没有实现那么就会出现编译警告/错误 3.协议必须在controller的作用域范围内定义 4.在一个应用中的控制流程是可跟踪的并且是可识别的: 5.在一个控制器中可以定义定义多个不同的协议,每个协议有不同的delegates 6.没有第三方对象要求保持/监视通信过程. 7.能够接收调用的协议方法的返回值.这意味着delegate能够提供反馈信息给c