C# Func委托详解:从传统委托到Lambda表达式

认真发呆
认真发呆
发布时间:2026-10-14| 5人浏览过
原创

在C#开发中,Func 是最常用的泛型委托之一,用于表示返回指定类型值的方法。本文通过代码实例,梳理从传统委托到 Lambda 表达式的演变,帮助开发者快速掌握 Func 的核心用法。

结果或目标

演示如何使用 Func<string, string> 定义一个接收字符串并返回字符串的操作,并通过不同方式调用该方法。

准备条件

  1. 安装支持 C# 8.0 及以上版本的 .NET SDK 或 Visual Studio。
  2. 创建控制台应用程序项目。

真实操作顺序

第1步:声明并使用命名方法

首先定义一个名为 upperCaseString 的静态方法,然后使用自定义的委托进行包装和调用。

using System;

namespace Anonymous_Lam
{
    delegate string ConvertMethod(string Method);

    class Program
    {
        static void Main()
        {
            // 将方法赋给自定义委托
            ConvertMethod ConvertUpperstring = upperCaseString;
            Console.WriteLine("Using delegate instance to call upperString method");
            Console.WriteLine(ConvertUpperstring("guohu"));
        }

        static string upperCaseString(string strName)
        {
            return strName.ToUpper();
        }
    }
}

第2步:使用匿名委托

无需额外定义方法,直接在委托变量中使用匿名函数完成逻辑:

// 使用匿名委托
ConvertMethod ConvertAsynCaseString = delegate(string s)
{
    return s.ToUpper();
};
Console.WriteLine(ConvertAsynCaseString("leihu"));

第3步:引入 Func<T, TResult>

Func 是 C# 内置的泛型委托,语法更简洁:
- <TIn, TOut> 表示输入参数类型与返回值类型。
- 示例:Func<string, string> FuncCaseUpper = upperCaseString;

// 使用 Func 指向已有方法
Func<string, string> FuncCaseUpper = upperCaseString;
Console.WriteLine(FuncCaseUpper("junwenLi"));

第4步:结合匿名方法与 Func

可以直接为 Func 分配匿名委托,减少冗余方法声明:

// 使用匿名 Func
Func<string, string> FuncAnonyCaseUpper = delegate(string Name)
{
    return Name.ToUpper();
};
Console.WriteLine(FuncAnonyCaseUpper("jinhaoLiu"));

第5步:应用 Lambda 表达式(推荐)

Lambda 表达式是简化后的匿名函数写法,极大提升了代码可读性:
- 语法:参数 => 表达式

// 使用 Lambda Expression
Func<string, string> FuncLambda = Name => Name.ToUpper();
Console.WriteLine(FuncLambda("chengfan"));

简要总结

通过上述步骤可以看出,C# 委托技术的发展经历了“自定义委托 → 匿名委托 → Func + 匿名方法 → Func + Lambda”的优化路径。在实际开发中,建议优先使用 Func 配合 Lambda 表达式来替代冗长的代码块。以上就是C# Func委托的详细解析,更多关于C#高级特性的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。