【发布时间】:2011-05-15 11:29:19
【问题描述】:
谁能解释一下 C# 中的匿名方法(用简单的术语)并提供可能的示例
【问题讨论】:
-
您可能会在这里找到有用的答案:stackoverflow.com/questions/208381/…
谁能解释一下 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 中的 lamdba 表达式几乎完全取代了匿名方法(当然它们仍然完全有效)。匿名方法和 lambda 表达式统称为匿名函数。
【讨论】:
匿名方法是没有名称的方法,并且该方法已就地声明,例如:
Button myButton = new Button();
myButton .Click +=
delegate
{
MessageBox.Show("Hello from anonymous method!");
};
【讨论】:
myButton.Click,我将不得不使用 EventHandler 作为变量类型,即使它不使用参数。
匿名方法是在通常需要方法但没有名称(因此是匿名的)的地方使用的代码块。
【讨论】:
这些是没有名字的方法。
比如普通的方法是:
public void Foo()
{
Console.WriteLine("hello");
}
虽然匿名方法可以是:
myList.ForEach(item => Console.WriteLine("Current item: " + item));
ForEach里面的代码其实是一个方法,但是没有名字,不能从外面调用。
【讨论】: