在C#中,Action<T>和Func<T>是两种常用的泛型委托,它们为开发者提供了一种类型安全的方式来定义和处理方法引用。Action<T>和Func<T>的主要区别在于,Action<T>用于封装没有返回值(即返回类型为void)的方法,而Func<T>则用于封装有返回值的方法。
Action<T>委托用于表示接受特定类型参数并不返回任何值(void)的方法。T在这里是一个占位符,代表委托可以接受的参数类型。Action<T>可以有多个类型参数,比如Action<T1, T2, ...>,最多可以支持16个类型参数。
示例代码:
using System;class Program{ static void Main() { // 定义一个 Action<string> 委托实例,并关联一个方法 Action<string> greet = Greet; // 调用委托实例 greet("World"); } static void Greet(string name) { Console.WriteLine($"Hello, {name}!"); }}
在这个例子中,我们定义了一个Greet方法,它接受一个字符串参数并不返回任何值。然后,我们创建了一个Action<string>委托实例,并将其关联到Greet方法上。最后,我们通过委托实例调用了Greet方法。
与Action<T>不同,Func<T>委托用于表示具有返回值的方法。Func<T>的第一个类型参数是输入参数的类型,最后一个类型参数是返回值的类型。例如,Func<int, int>表示接受一个int参数并返回一个int值的方法。
示例代码:
using System;class Program{ static void Main() { // 定义一个 Func<int, int> 委托实例,并关联一个方法 Func<int, int> square = CalculateSquare; // 调用委托实例并打印结果 int result = square(5); Console.WriteLine($"The square of 5 is {result}."); } static int CalculateSquare(int number) { return number * number; }}
在这个例子中,我们定义了一个CalculateSquare方法,它接受一个整数参数并返回一个整数结果。然后,我们创建了一个Func<int, int>委托实例,并将其关联到CalculateSquare方法上。最后,我们通过委托实例调用了CalculateSquare方法,并打印了结果。
Action<T>和Func<T>委托是C#中非常有用的工具,它们提供了一种简洁、类型安全的方式来引用和调用方法。通过使用这些委托,开发者可以更加灵活地编写可重用的代码,并轻松地实现回调函数和事件驱动的设计模式。在实际开发中,根据方法是否有返回值来选择使用Action<T>还是Func<T>委托是非常重要的。
本文链接:http://www.28at.com/showinfo-26-91823-0.htmlC# 中的 Action 和 Func 委托
声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com
上一篇: 十个经典 Python 设计模式解析
下一篇: C语言字符串为什么以/0 作为结束标志?