C#委托和匿名方法

西街长安
2024-01-23 / 1 评论 / 63 阅读 / 正在检测是否收录...

在C#中,委托是一种强大的类型,允许将方法作为参数传递,从而实现回调事件处理等功能。本文将首先介绍委托的基础概念,然后深入探讨匿名方法Lambda 表达式,这两者是在C#中使用委托时的有力补充。

using System;

// 定义委托
delegate void MyDelegate(int x);

class Program
{
    static void Main()
    {
        // 创建委托实例并关联方法
        MyDelegate myDelegate = new MyDelegate(PrintNumber);

        // 调用委托,实际上调用了关联的方法
        myDelegate(42);
    }

    // 委托关联的方法
    static void PrintNumber(int num)
    {
        Console.WriteLine("Number: " + num);
    }
}

上面的例子中,我们定义了一个委托 MyDelegate,它可以引用带有一个整数参数的方法。然后,我们创建了委托实例,并将其关联到 PrintNumber 方法上,最终通过调用委托来执行方法。

匿名方法是一种没有显式命名的方法,通常用于传递给委托事件处理程序。它允许在需要时直接定义和使用方法,而无需为其命名。

using System;

class Program
{
    delegate void MyDelegate(int x);

    static void Main()
    {
        // 使用匿名方法创建委托实例
        MyDelegate myDelegate = delegate (int x)
        {
            Console.WriteLine("匿名方法被调用,参数为: " + x);
        };

        // 调用委托
        myDelegate(10);
    }
}

在这个例子中,我们使用匿名方法创建了一个委托实例,它会在调用时输出参数的信息。

Lambda 表达式C# 3.0及更高版本引入的一项功能,用于更简洁地表示匿名方法。它进一步简化了代码,使得处理委托变得更加方便。

using System;

class Program
{
    delegate void MyDelegate(int x);

    static void Main()
    {
        // 使用 Lambda 表达式创建委托实例
        MyDelegate myDelegateLambda = (int x) =>
        {
            Console.WriteLine("Lambda 表达式被调用,参数为: " + x);
        };

        // 调用委托
        myDelegateLambda(20);

        // Lambda 表达式的更简洁形式
        MyDelegate conciseLambda = x => Console.WriteLine("更简洁的 Lambda,参数为: " + x);

        conciseLambda(30);
    }
}

Lambda 表达式在语法上更为紧凑,使得代码更易读且更简洁。在处理简单的委托场景时,Lambda 表达式是更推荐的选择。

1

评论 (1)

取消
  1. 头像
    西街长安 作者
    Windows 10 · Google Chrome

    表情

    回复