C# Func委托详解:从传统委托到Lambda表达式
在C#开发中,Func 是最常用的泛型委托之一,用于表示返回指定类型值的方法。本文通过代码实例,梳理从传统委托到 Lambda 表达式的演变,帮助开发者快速掌握 Func 的核心用法。
结果或目标
演示如何使用 Func<string, string> 定义一个接收字符串并返回字符串的操作,并通过不同方式调用该方法。
准备条件
- 安装支持 C# 8.0 及以上版本的 .NET SDK 或 Visual Studio。
- 创建控制台应用程序项目。
真实操作顺序
第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#高级特性的资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













