C#编程中掌握委托(将方法作为参数传递)

科技   2024-11-13 00:25   广东  

在 C# 中,通常使用委托或 lambda 表达式将方法作为参数传递。

将方法作为参数传递 |使用 C# 💻编程掌握委托

委托是引用具有特定签名的方法的类型,允许您将方法作为参数传递给其他方法。

在现代 C# 编程中,灵活性和可重用性是构建高效、可维护的应用程序的关键。实现动态行为的一个强大功能是将方法作为参数传递给其他方法的能力。这就是代表发挥作用的地方。通过利用委托,您可以创建不仅适应不同情况,而且保持简洁的代码。在本文中,我们将深入探讨将方法作为参数传递的概念,探索委托的工作原理,并演示在 C# 中掌握这一基本技能的实际示例。

下面介绍如何使用 C# 掌握委托。

1. 了解代表

委托定义它可以引用的方法的签名。您可以通过委托传递具有相同签名的方法。

代表声明:

public delegate int Operation(int a, int b);

这里是一个委托类型,它可以指向任何采用两个整数并返回一个整数的方法。Operation

2. 为委托人分配方法

如果方法与委托定义的签名匹配,则可以将方法分配给委托实例。

将方法作为参数传递 |使用 C# 💻编程掌握委托

将方法分配给委托人:

将方法作为参数传递 |使用 C# 💻编程掌握委托

3. 将委托作为参数传递

您可以将委托作为参数传递给其他方法,以动态定义行为。

public void ExecuteOperation(int a, int b, Operation operation)  
{
int result = operation(a, b);
Console.WriteLine($"Result: {result}");
}

调用该方法:

ExecuteOperation(10, 5, _Calculator.Add);       // Output: Result: 15  
ExecuteOperation(10, 5, _Calculator.Subtract); // Output: Result: 5

4. Lambda 表达式和委托

委托通常与 lambda 表达式一起使用,lambda 表达式是匿名方法的简写。

使用 Lambda 的示例:

ExecuteOperation(5, 3, (a, b) => a * b);  // Output: Result: 15

5. 多播代表

C# 中的委托可以指向多个方法,从而形成_多播委托_。

Operation multiOp = _Calculator.Add;  
multiOp += _Calculator.Subtract;

multiOp(5, 3);

// Calls both Add and Subtract, though only the last result is returned

6. Func 和 Action 委托

C# 提供泛型委托,而不是声明自定义委托类型:

  • Func:当方法返回值时使用。

  • 操作:当方法返回 时使用。void

Func<int, int, int> multiply = (a, b) => a * b;  
ExecuteOperation(5, 3, multiply); // Output: Result: 15

Action<string> print = message => Console.WriteLine(message);
print("Hello, World!"); // Output: Hello, World!

在 C# 中使用委托将方法作为参数传递是创建灵活且可重用代码的强大功能。您可以使用委托、lambda 表达式和内置类型(如 和 )动态分配、传递和调用方法。FuncAction

掌握 C# 中的委托为编写灵活且可维护的代码开辟了一个充满可能性的世界。通过了解如何将方法作为参数传递,您可以轻松创建适应不同要求的动态应用程序。无论是通过自定义委托、lambda 表达式还是 and 等内置类型,此技术都允许您解耦逻辑并提高代码可重用性。当您将委托合并到开发工具包中时,您会发现自己编写了更简洁、更高效的代码,这些代码可以在不同的场景中轻松扩展。


推荐阅读:
适用于 .NET 稳定的官方OpenAI库
.NET无侵入式对象池解决方案
相约 .NET 9!|共同关注 .NET Conf 2024 最新发布
在 .NET 中编写更好的配置文件
.NET Conf China 2024(智能 创新 开放)-- 启动智能时代新引擎
基于.NET8 + Vue/UniApp前后端分离的快速开发框架,开箱即用!

点击下方卡片关注DotNet NB

一起交流学习

▲ 点击上方卡片关注DotNet NB,一起交流学习

请在公众号后台

回复 【路线图】获取.NET 2024开发者路线
回复 【原创内容】获取公众号原创内容
回复 【峰会视频】获取.NET Conf大会视频
回复 【个人简介】获取作者个人简介
回复 【年终总结】获取作者年终回顾
回复 加群加入DotNet NB 交流学习群

长按识别下方二维码,或点击阅读原文。和我一起,交流学习,分享心得。

DotNet NB
.NET 技术学习分享,社区热点分享,专注为 .NET 社区做贡献,愿我们互相交流学习,共同推动社区发展
 最新文章