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

什么是委托?
什么是委托?
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」课时是免费的吗?
是的 — 「探索委托和 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 反馈 — 无需本地设置。
此课程中的所有课时
- C# 中的泛型
- Async 和 Await:使用异步代码
- 理解线程和任务
- 探索委托和 Lambda
- 理解 C# 中的反射