首页 > 代码库 > 由winform来看action与delegate的区别
由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+系统委托更优美
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。