这是一个 lambda 表达式。 lambda 表达式是编写方法(或准确地说是委托)的一种非常简洁的方式。你可以写一个这样的方法
private void TextBox_TextChanged(object sender, EventArgs e)
{
this.Foo();
}
然后像这样添加处理程序
textBox.TextChanged += TextBox_TextChanged;
相当于
textBox.TextChanged += (s, e) => this.Foo();
你也可以写
textBox.TextChanged += (object s, EventArgs e) => this.Foo();
但参数的类型由 C# 编译器自动推断。 s 和e 是参数,相当于TextBox_TextChanged 方法的参数:object sender, EventArgs e。它们可以用在=>之后的表达式中。
textBox.TextChanged += (s, e) => this.Foo(s, e);
(假设 Foo 有对应的参数列表)
这些参数的名称无关紧要。
更新:
如果所需的方法(或委托)需要返回值,您可以在 lambda 表达式中删除 return 关键字。给定这个方法
public void WriteValues(Func<double, double> f)
{
for (int i = 0; i <= 10; i++) {
Console.WriteLine("f({0}) = {1}", i, f(i));
}
}
您可以拨打这些电话
WriteValues(x => x * x);
WriteValues(x => Math.Sin(x));
WriteValues(t => Math.Exp(-t));