C# 匿名方法学习笔记

什么是匿名方法?

C#中的匿名方法是一种没有名称的方法,它允许您在代码块中定义和使用函数。与具有名称的方法不同,匿名方法通常作为参数传递给其他方法。

如何定义一个匿名方法?

在C#中,可以使用delegate关键字来定义匿名方法。以下是一个示例:

csharpCopy Code
delegate int Calculate(int x, int y); // 定义一个计算器方法,该方法接受两个整数和一个匿名方法作为参数 int Calculator(int x, int y, Calculate calculate) { return calculate(x, y); } // 调用带有匿名方法的计算器方法 int result = Calculator(3, 5, delegate(int x, int y) { return x * y; });

在上面的示例中,我们定义了一个Calculate委托类型,它表示接受两个整数并返回一个整数的方法。然后,我们定义了一个Calculator方法,该方法接受两个整数和一个Calculate委托类型的参数,并返回一个整数。最后,我们调用带有一个匿名方法的Calculator方法,该匿名方法将两个整数相乘并返回结果。

匿名方法的实际应用

匿名方法通常用于事件处理程序,在这种情况下,您需要将方法作为参数传递给事件处理程序。以下是一个示例:

csharpCopy Code
// 声明一个委托类型 delegate void MyEventHandler(string message); class MyClass { // 声明一个事件 public event MyEventHandler MyEvent; // 触发事件的方法 public void RaiseEvent() { if (MyEvent != null) { MyEvent("Hello, world!"); } } } class Program { static void Main(string[] args) { MyClass obj = new MyClass(); // 使用匿名方法来定义事件处理程序 obj.MyEvent += delegate(string message) { Console.WriteLine(message); }; // 触发事件 obj.RaiseEvent(); } }

在上面的示例中,我们声明了一个MyEventHandler委托类型和一个MyClass类,在该类中我们声明了一个MyEvent事件和一个RaiseEvent方法。在Main方法中,我们使用一个匿名方法来定义MyEvent事件的事件处理程序,该匿名方法将接受一个字符串参数并输出它。最后,我们调用RaiseEvent方法以触发事件。

总结

C#中的匿名方法是一种非常强大的编程工具,它允许您在代码块中定义和使用函数,并且通常用于将方法作为参数传递给其他方法或事件处理程序。掌握匿名方法是成为一名优秀的C#开发人员所必需的技能之一。