C# 通过Delegate,action,func关键字创建委托匿名方法

本文主要是介绍C# 通过Delegate,action,func关键字创建委托匿名方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在C#中,委托(Delegate)是一种用于封装方法的类型,它可以让我们将方法当作参数传递,也可以将方法作为返回值。在C#中,Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数和有返回值的函数。

本文将详细介绍如何在C#中使用Delegate、Action和Func关键字创建委托匿名方法。

1. 委托(Delegate)

委托是一种用于封装方法的类型,它可以将方法当作参数传递,也可以将方法作为返回值。委托的本质是一个类,它包含了一个方法指针(Method Pointer),这个方法指针指向了一个具体的方法。

下面是一个简单的委托示例:

public delegate void MyDelegate(string message);

这个委托名为MyDelegate,它接受一个字符串参数,并没有返回值。

2. 匿名方法

匿名方法是一种没有名称的方法,它通常用于传递给委托或事件。匿名方法可以通过lambda表达式或使用delegate关键字定义。

使用lambda表达式创建匿名方法

Lambda表达式是一种简洁的匿名方法表示方式。下面是一个使用lambda表达式创建匿名方法的示例:

public void SayHello(string message)
{Console.WriteLine(message);
}public void ExecuteDelegate(MyDelegate del)
{del("Hello, World!");
}public void Main()
{ExecuteDelegate(() => SayHello("Hello, C#!")); // 使用lambda表达式创建匿名方法
}

在这个示例中,我们定义了一个SayHello方法,一个ExecuteDelegate方法,以及一个Main方法。在Main方法中,我们使用lambda表达式创建了一个匿名方法,并将其传递给ExecuteDelegate方法。

使用delegate关键字创建匿名方法

除了使用lambda表达式,我们还可以使用delegate关键字定义匿名方法。下面是一个使用delegate关键字创建匿名方法的示例:

public delegate void MyDelegate(string message);public void SayHello(string message)
{Console.WriteLine(message);
}public void ExecuteDelegate(MyDelegate del)
{del("Hello, World!");
}public void Main()
{MyDelegate myDel = delegate(string message){SayHello(message);};ExecuteDelegate(myDel); // 使用delegate关键字创建匿名方法
}

在这个示例中,我们使用delegate关键字定义了一个匿名方法,并将其传递给ExecuteDelegate方法。

3. Action和Func

Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数和有返回值的函数。

Action

Action是一个接受一个特定类型T的参数,并且没有返回值的委托。下面是一个Action的示例:

public delegate void Action<T>(T obj);

Func<T, TResult>

Func<T, TResult>是一个接受一个特定类型T的参数,并返回一个特定类型TResult的委托。下面是一个Func<T, TResult>的示例:

public delegate TResult Func<T, TResult>(T obj);

使用Action和Func创建匿名方法

下面是一个使用Action和Func创建匿名方法的示例:

public void SayHello(string message)
{Console.WriteLine(message);
}public int Add(int a, int b)
{return a + b;
}public void Main()
{Action<string> action = SayHello; // 使用Action创建匿名方法action("Hello, World!");Func<int, int, int> func = Add; // 使用Func创建匿名方法int result = func(3, 4);Console.WriteLine("Result: " + result);
}

在这个示例中,我们使用Action和Func创建了两个匿名方法,并分别调用了SayHello和Add方法。

总结:

在C#中,委托(Delegate)是一种用于封装方法的类型,它可以将方法当作参数传递,也可以将方法作为返回值。Action和Func是两种特殊的委托类型,它们分别用于表示没有返回值的函数(Action)和有返回值的函数(Func<T, TResult>)。
Delegate、Action和Func关键字提供了一种灵活的方式来创建和使用匿名方法。通过lambda表达式和delegate关键字,你可以定义简单的或复杂的匿名方法,并根据需要使用它们。Action和Func委托类型分别用于表示没有返回值和有返回值的方法。掌握这些概念,你可以更灵活地使用C#的函数式编程特性。

这篇关于C# 通过Delegate,action,func关键字创建委托匿名方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/923578

相关文章

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

创建Java keystore文件的完整指南及详细步骤

《创建Javakeystore文件的完整指南及详细步骤》本文详解Java中keystore的创建与配置,涵盖私钥管理、自签名与CA证书生成、SSL/TLS应用,强调安全存储及验证机制,确保通信加密和... 目录1. 秘密键(私钥)的理解与管理私钥的定义与重要性私钥的管理策略私钥的生成与存储2. 证书的创建与

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I