C#中的匿名方法是什么?
有人可以解释一下C#中的匿名方法(简单来说),并提供可能的例子
匿名方法被引入到C#2中,作为创建委托实例的一种方式,而无需编写单独的方法。 它们可以在封闭方法中捕获局部变量,使它们成为闭包forms。
匿名方法看起来像:
delegate (int x) { return x * 2; }
并且必须转换为特定的委托类型,例如通过赋值:
Func 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
的代码实际上是一个方法但没有名称,你不能从外面调用它。