C#教程

关注公众号 jb51net

关闭
首页 > 软件编程 > C#教程 > C#  Func用法

C# 中Func 的用法小结

作者:CHEstudy

本文主要介绍了C#中Func的用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在 C# 中,Func 是一个泛型委托类型,用于表示有返回值的方法,它是 .NET 框架提供的预定义委托,无需手动声明即可直接使用。Func 的核心作用是封装具有特定参数列表和返回值的方法,常用于 lambda 表达式、匿名方法或作为方法参数传递,使代码更简洁灵活。

一、基本定义与语法

Func 是泛型委托,定义格式为:

Func<参数类型1, 参数类型2, ..., 返回值类型>

二、常用形式与示例

// 定义:无参数,返回string
Func<string> getTime = () => DateTime.Now.ToString("HH:mm:ss");
// 调用
string currentTime = getTime(); // 结果:当前时间字符串,如 "15:30:20"
// 定义:输入int,返回其平方(int)
Func<int, int> square = x => x * x;

// 调用
int result = square(5); // 结果:25
// 定义:输入两个string,返回拼接结果
Func<string, string, string> combine = (a, b) => $"{a}-{b}";

// 调用
string str = combine("Hello", "World"); // 结果:"Hello-World"
  1. 多参数(如 3 个参数)
// 定义:输入三个int,返回它们的和
Func<int, int, int, int> sum = (a, b, c) => a + b + c;

// 调用
int total = sum(1, 2, 3); // 结果:6

三、Func 的典型用法

// 定义一个使用Func的方法:对数组中的每个元素执行func逻辑并返回新数组
int[] ProcessArray(int[] array, Func<int, int> func)
{
    int[] result = new int[array.Length];
    for (int i = 0; i < array.Length; i++)
    {
        result[i] = func(array[i]); // 执行传入的逻辑
    }
    return result;
}

// 使用:传入不同的Func实现不同功能
int[] numbers = { 1, 2, 3, 4 };
int[] squares = ProcessArray(numbers, x => x * x); // 求平方:[1,4,9,16]
int[] doubles = ProcessArray(numbers, x => x * 2); // 翻倍:[2,4,6,8]
List<int> numbers = new List<int> { 1, 2, 3, 4, 5 };

// Where方法接收Func<int, bool>:筛选出偶数
var evenNumbers = numbers.Where(n => n % 2 == 0); // 结果:[2,4]

// Select方法接收Func<int, string>:转换为字符串
var numberStrings = numbers.Select(n => $"数字:{n}"); // 结果:["数字:1", "数字:2", ...]
// 封装“字符串处理”逻辑
Func<string, string, string> processString = (input, suffix) => 
{
    if (string.IsNullOrEmpty(input))
        return "默认值";
    return input.Trim() + suffix;
};

// 多次复用
string res1 = processString("  test  ", "123"); // 结果:"test123"
string res2 = processString(null, "456"); // 结果:"默认值456"

四、Func 与 Action 的区别

1.Func:有返回值(至少需要指定返回值类型)。
2. Action:无返回值(专注于执行操作,参数列表与 Func 类似,但无返回值类型)。

示例对比:

// Func(有返回值)
Func<int, int> addOne = x => x + 1;

// Action(无返回值)
Action<int> printNumber = x => Console.WriteLine(x);

五、总结

Func 是 C# 中处理 “有返回值的方法封装” 的强大工具,其核心优势在于:

  1. 简化代码:无需手动声明委托类型,直接使用预定义的 Func。
  2. 灵活传递逻辑:作为参数传递时,可动态切换方法行为(如 LINQ、回调函数)。
  3. 配合 lambda 表达式:使代码更简洁,可读性更高。
    掌握 Func 的用法,能极大提升 C# 代码的灵活性和可维护性,尤其在 LINQ、委托回调等场景中必不可少。

到此这篇关于C# 中Func 的用法小结的文章就介绍到这了,更多相关C# Func用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文