匿名方法

匿名方法是对委托事件语法的简化.
addButton.Click += delegate{
   
        ListBox1.Items.Add(TextBox1.Text);
    };//匿名方法
如果在delegate后面指定了参数列表,则必须和事件的委托类型相同,后面的代码可以访问这些参数,当然也可以不指定参数列表,但是不指定参数和参数列表为空是两马事。
addButton.Click += delegate(object sender, EventArgs e){
 MessageBox.Show(((Button)sender).Text);
    };
匿名方法的返回值必须和委托类型的返回值兼容
如果委托类型的返回类型为void匿名方法就不能有返回值

匿名方法的外部变量
匿名方法所使用的局部变量或参数就是匿名方法的外部变量
外部变量的生存期会由于匿名方法的捕获效应而延长,一直到委托实例不再被引用为止

委托类型的推断
C#2.0允许委托实例化时省掉委托类型,直接写下方法名,编译器会根据方法的签名做合理推断
1.0:
 addButtion.Click += new EventHandler(AddClick);
    Apply(a,new Function(Math.Sin));
2.0
   addButton.Click += AddClick;
   Apply(a,Math.Sin);

posted @ 2009-10-27 21:08  flora_asp.net  阅读(209)  评论(0编辑  收藏  举报