匿名方法是一种不包含任何名称的方法,它是在 C# 2.0 中引入的。在 C# 中,匿名方法允许您以内联方式定义方法,而无需显式声明单独的命名方法。当您需要将方法作为委托参数时,例如用于事件处理或 LINQ 查询时,它特别有用。
C# 中的匿名方法与示例
下面介绍如何在 C# 中声明和使用接口。
// An Anonymous Method
delegate(parameters) {
// method body
};
例如,要创建一个匿名方法,该方法包装水果名称并将其分配给委托:
using System;
// Define a delegate
delegate void fruitName(string name);
public class Program
{
public static void Main(string[] arge)
{
// Create an anonymous method and assign it to a delegate
fruitName fruit = delegate(string name)
{
Console.WriteLine("My favorite fruit is: {0}", name);
};
fruit("Cherry");
}
}
My favorite fruit is: Cherry
2. 为 Fruit 分配了一个匿名方法,该方法采用字符串名称并显示水果名称字符串。
3. fruit(“Cherry”); 演示用参数 Cherry 呼叫代表,该参数打印我最喜欢的水果是:Cherry。
using System;
// Define a delegate
delegate void fruitName(string name);
public class Program
{
public static void Main(string[] arge)
{
string like = "Kiwi";
// Create an anonymous method and assign it to a delegate
fruitName fruit = delegate(string name)
{
Console.WriteLine("My favorite fruit is: {0}", name);
// Accessing outer aariable in anonymous method
Console.WriteLine("I Like {0} also", like);
};
fruit("Cherry");
}
}
My favorite fruit is: Cherry
I Like Kiwi also
2. 为 Fruit 分配了一个匿名方法,该方法采用字符串名称并显示水果名称字符串。
3. fruit(“Cherry”); 演示用参数 Cherry 呼叫代表,该参数打印我最喜欢的水果是:Cherry。
4. 在这个例子中,我们正在访问匿名方法内部的一个变量,该变量是在匿名方法之外声明的。这种类型的变量称为外部变量。如下例所示,like 是外部变量。
Ref 和 Out,in 参数不以匿名方法访问。这限制了他们修改在外部作用域中声明的变量的能力。
它不能包含 goto、break 或 continue 等跳转语句。
匿名方法始终是私有的,不能有显式的访问修饰符(public、private、internal 等)。与命名方法相比,这限制了对可见性的控制。
我们也可以使用匿名方法作为事件处理程序。
匿名方法不会访问不安全的代码。
定义分部类各部分的顺序无关紧要。编译器将它们合并在一起以创建单个类。
匿名方法不能是异步 (async),这限制了它们在需要异步操作(如任务和 async-await 模式)的场景中的使用。另一方面,Lambda 表达式可以是异步的。
与 lambda 表达式不同,匿名方法需要带有 {} 和显式返回语句的完整方法主体。