dlmap

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
一直忙于工作,无法系统的学习 vs.net 2005 带来的新特性。
今天看了一下c#的委托,呵呵,无话可说了。
以前声明委托的时候,理解起来、以及使用起来怪别扭的如这样的,按钮的 click 事件

this.button2.Click += new EventHandler(button1_Click);

private void button1_Click(object sender, EventArgs e)
        
{
            Button b 
= (Button)sender;
            System.Console.WriteLine(
"{0} click.",b.Name);
        }

而在2.0里,我们可以这样写
this.button2.Click += button1_Click;

private void button1_Click(object sender, EventArgs e)
{
  Button b 
= (Button)sender;
  System.Console.WriteLine(
"{0} click.",b.Name);
}

 初学者,理解这个比较容易了;轮到我理解这个别扭了,呵呵,居然不用委托对象直接调用。

最让人感到兴奋的是,增加匿名的委托调用,这让我们在方法中调用委托的时候,委托中的代码直接访问方法中局部变量

this.button2.Click += delegate(object sender, EventArgs e){
    Button b 
= (Button)sender;
    Console.WriteLine(
"Hello {0}", b.Name);
}
;

不提供参数的用法
this.button2.Click += delegate{Console.WriteLine("Hello");};

访问局部变量可以这样了
1public Form1()
2{
3    string str = "Hello world!";
4    InitializeComponent();
5
6    this.button2.Click += delegate { Console.WriteLine(str); };
7
8}

c# 2.0 带来的东西太多了,无法系统的整理,期待正式版的出来。
posted on 2005-06-09 11:57  无色风  阅读(1337)  评论(2)    收藏  举报