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

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

在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 相关产品和应用

全部下载

专题列表