0Pricing
C# Academy · 课时

探索委托和 Lambda

了解委托和 Lambda 表达式,编写简洁灵活的代码

探索委托和 Lambda 是 CoddyKit 上的免费 C# Academy 课时。 这是第 4 节课,共 5 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 C# Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 C# Academy 课程共包含 5 节课。

使用 Lambda 表达式与委托

使用 Lambda 表达式与委托

Lambda 表达式可以直接赋给委托。示例:

探索委托和 Lambda — 插图 1

什么是委托?

什么是委托?

delegate 是一种保存具有特定签名的方法引用的类型。委托允许将方法作为参数传递,或动态地为其赋值。

示例:委托通常用于回调和事件处理。

定义和使用委托

定义和使用委托

您可以使用 delegate 关键字定义委托。示例:

重点:委托提供了一种封装方法的方式。

using System;

class Program {
    // Define a delegate
    public delegate void PrintDelegate(string message);

    static void Main() {
        PrintDelegate print = PrintMessage; // Assign method to delegate
        print("Hello, Delegates!"); // Call the method via the delegate
    }

    static void PrintMessage(string message) {
        Console.WriteLine(message);
    }
}

什么是 Lambda 表达式?

什么是 Lambda 表达式?

Lambda 表达式是在 C# 中表示匿名方法的一种简洁方式。它使用的语法是 (parameters) => expression。

示例:(x, y) => x + y 表示一个将两个数字相加的方法。

提示:Lambda 表达式通常与 LINQ 和委托结合使用,以提高简洁性和清晰度。

Lambda 表达式与委托

使用 Lambda 表达式与委托

Lambda 表达式可以直接赋给委托。示例:

重点:Lambda 表达式可以让代码更加简洁易读。

using System;

class Program {
    public delegate int MathOperation(int x, int y);

    static void Main() {
        MathOperation add = (x, y) => x + y; // Lambda for addition
        Console.WriteLine("Result: " + add(10, 20)); // Outputs: Result: 30
    }
}

多播委托

多播委托

单个 delegate 可以引用多个方法。所有方法都会按顺序调用。示例:

using System;

class Program {
    public delegate void Notify(string message);

    static void Main() {
        Notify notify = PrintMessage;
        notify += LogMessage;

        notify("Hello, Multicast Delegates!"); // Calls both methods
    }

    static void PrintMessage(string message) {
        Console.WriteLine("Print: " + message);
    }

    static void LogMessage(string message) {
        Console.WriteLine("Log: " + message);
    }
}

练习挑战

练习挑战

创建一个程序,使用委托 StringOperation 执行字符串操作,例如转换为大写和反转字符串。示例:

using System;

class Program {
    public delegate string StringOperation(string input);

    static void Main() {
        StringOperation operations = ToUpperCase;
        operations += ReverseString;

        string input = "Hello";
        foreach (var operation in operations.GetInvocationList()) {
            Console.WriteLine(((StringOperation)operation)(input));
        }
    }

    static string ToUpperCase(string input) {
        return input.ToUpper();
    }

    static string ReverseString(string input) {
        char[] chars = input.ToCharArray();
        Array.Reverse(chars);
        return new string(chars);
    }
}

委托和 Lambda 表达式最佳实践

委托和 Lambda 表达式最佳实践

以下是一些最佳实践:

  • 使用委托实现回调和事件处理。
  • 优先使用简洁明了的 Lambda 表达式。
  • 将 Lambda 表达式与 LINQ 结合起来,高效处理数据。
  • 避免使用过于复杂的 Lambda 表达式,以保持代码的可读性。

提示:在 Lambda 表达式中使用有意义的参数名称,提高代码的清晰度。

做得很好!

做得很好!

恭喜您!您已经学会了如何使用委托和 Lambda 表达式在 C# 中编写函数式和事件驱动代码。在下一课中,我们将探索 C# 中的反射,这是一项用于运行时类型分析的强大功能。让我们继续编写代码吧!

探索委托和 Lambda — 插图 10

常见问题解答

「探索委托和 Lambda」课时是免费的吗?

是的 — 「探索委托和 Lambda」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 C# Academy 课程的其余内容,请升级到 CoddyKit PRO。 C# Academy 课程共包含 5 节课。

「探索委托和 Lambda」这节课中我会学到什么?

了解委托和 Lambda 表达式,编写简洁灵活的代码 你通过在浏览器中直接运行的动手代码来练习 C# Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 C# Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 C# Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 5 节。

「探索委托和 Lambda」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 C# Academy 课中编写并运行代码吗?

能。每节 C# Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. C# 中的泛型
  2. Async 和 Await:使用异步代码
  3. 理解线程和任务
  4. 探索委托和 Lambda
  5. 理解 C# 中的反射
← 返回 C# Academy