匿名方法
匿名方法是对委托事件语法的简化.
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);