什么是 C# 中的匿名方法

本文关键字:方法 什么 | 更新日期: 2023-09-27 17:56:33

有人可以解释一下 C# 中的匿名方法是什么(用简单的术语)并提供可能的示例

什么是 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# 2 中的委托更改
  • MSDN 关于匿名方法
  • C# 第 5 章深入 如果你想买我的书:)

请注意,C# 3 中的 lamdba 表达式几乎完全取代了匿名方法(当然,它们仍然完全有效)。匿名方法和 lambda 表达式统称为匿名函数

匿名方法是没有名称的方法,此方法已就地声明,例如:

Button myButton = new Button();
myButton .Click +=
delegate
{
    MessageBox.Show("Hello from anonymous method!");
};

匿名方法是在通常需要方法且没有名称(因此是匿名)的地方使用的代码块。

MSDN 具有使用匿名方法的示例。

这些是没有名称的方法。

例如,普通方法是:

public void Foo()
{
   Console.WriteLine("hello");
}

而匿名方法可以是:

myList.ForEach(item => Console.WriteLine("Current item: " + item));

ForEach中的代码实际上是一个方法,但没有名称,不能从外部调用它。