由winform来看action与delegate的区别

时间:2014-05-17 15:16:24   收藏:0   阅读:387
bubuko.com,布布扣
 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         }
bubuko.com,布布扣

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

bubuko.com,布布扣
 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     }
bubuko.com,布布扣

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

由winform来看action与delegate的区别,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!