什么是 C# 中的匿名方法
本文关键字:方法 什么 | 更新日期: 2023-09-27 17:56:33
有人可以解释一下 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
中的代码实际上是一个方法,但没有名称,不能从外部调用它。