首页 > 编程笔记 > C#笔记

C#匿名方法是什么(小白必读)

为了简化委托的操作,在 C# 中提出了匿名方法的概念。它在一定程度上减少了代码量,并简化了委托引用方法的过程。

匿名方法允许一个与委托关联的代码被内联地写入使用委托的位置,匿名方法是通过使用 delegate 关键字创建委托实例来声明的,其语法格式如下:
delegate([参数列表])
{
     //代码块
}

下面是使用匿名方法的一个例子:
using System;

class Program
{
    static void Main()
    {
        // 定义一个委托类型
        Action<string> printAction = delegate(string message)
        {
            Console.WriteLine(message);
        };

        // 使用匿名方法
        printAction("Hello, World!");
    }
}
在这个例子中,Action<string> 是一个委托类型,它接受一个 string 类型的参数并且没有返回值。printAction 被初始化为一个匿名方法,该方法接收一个字符串参数并打印它。

再举个例子:
delegate void DelOutput(string s);//自定义委托
class Program
{
      static void NamedMethod(string k)//与委托匹配的命名方法
      {
             Console.WriteLine(k);
      }
      static void Main(string[] args)
      {
             //委托的引用指向匿名方法delegate(string j){}
             DelOutput del = delegate (string j)
             {
                 Console.WriteLine(j);
             };
             del.Invoke("匿名方法被调用");//委托对象del调用匿名方法
             //del("匿名方法被调用");//委托也可使用这种方式调用匿名方法
             Console.Write("\n");
             del = NamedMethod;//委托绑定到命名方法NamedMethod
             del("命名方法被调用");//委托对象del调用命名方法
             Console.ReadLine();
      }
}
首先定义一个无返回值且参数为字符串的委托类型 DelOutput;然后在控制台应用程序的默认类 Program 中定义一个静态方法 NamedMethod,使该方法与委托类型 DelOutput 相匹配;在 Main 方法中定义一个匿名方法 delegate(string j){},并创建委托类型 DelOutput 的对象 del;最后通过委托对象 del 分别调用匿名方法和命名方法 NamedMethod。

程序运行结果如下:

匿名方法被调用
 
命名方法被调用

推荐阅读