有人能简单地解释一下 C# 中的匿名方法是什么,并提供可能的示例吗?
C# 2引入了匿名方法,作为一种创建委托实例而不必编写单独方法的方式。它们可以“捕获”封闭方法中的局部变量,使它们成为一种“闭包”形式。
匿名方法看起来像这样:
delegate (int x) { return x * 2; }
并且必须转换为特定的委托类型,例如通过赋值:
Func<int, int> foo = delegate (int x) { return x * 2; };
... 或者订阅事件处理程序:
button.Click += delegate (object sender, EventArgs e) {
// React here
};
了解更多信息,请参见:
请注意,在 C# 3 中,Lambda 表达式 几乎 完全替代了匿名方法(尽管它们仍然完全有效)。匿名方法和 Lambda 表达式统称为 匿名函数。
匿名方法是一种没有名称且在代码所在的位置被声明的方法,例如:
Button myButton = new Button();
myButton .Click +=
delegate
{
MessageBox.Show("Hello from anonymous method!");
};
myButton.Click
中,即使它不使用参数,我也必须使用EventHandler作为变量类型。 - Arlen Beiler匿名方法是一段代码块,在通常需要方法的地方使用,但没有名称(因此是匿名的)。
MSDN提供了使用匿名方法的示例。
这些是没有名称的方法。
例如,普通方法是:
public void Foo()
{
Console.WriteLine("hello");
}
匿名方法可以是:
myList.ForEach(item => Console.WriteLine("Current item: " + item));
ForEach
内部的代码实际上是一个没有名称的方法,你无法从外部调用它。