- 近期完成的部分客户网站设计稿
- SEO的关键词密度
- CSS中position的absolute和relative的应用
- C#中IEnumerable接口的使用
- 百度优化能够杜绝人工干预
- seo新手如何来把控关键词是否匹配和密度大小
- ASP.NET 母版页和内容页中的事件
- PHP中static:静态方法和属性
- c#属性 [ApiExplorerSettings(IgnoreApi = true)]有什么作用?
- php中双冒号什么意思?
邮箱:
手机:15383239821
Func<>介绍
Func<> 是 C# 中的一种泛型委托,它封装了一个具有参数并有返回值的方法。它是 .NET 框架预定义的委托类型之一,用于简化代码,避免手动定义委托签名。
核心特性
返回值:Func<> 总是会返回一个值,其返回类型是泛型参数列表中的最后一个参数。
参数:可以接受 0 到 16 个输入参数,参数类型由前面的泛型参数指定。
用途:常用于将方法作为参数传递,尤其在 LINQ 查询、事件处理、回调函数和策略模式中非常常见。
常见用法示例
1、无参数,有返回值
Func<int> getRandom = () => new Random().Next(1, 100);
int number = getRandom(); // 调用委托,返回一个随机数
2、一个参数,有返回值
Func<string, int> stringLength = s => s.Length;
int length = stringLength("Hello, World!"); // 返回 13
3、多个参数,有返回值
Func<int, int, int> add = (a, b) => a + b;
int sum = add(5, 3); // 返回 8
4、作为方法参数(LINQ 典型应用)
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0); // Where 方法接受 Func<int, bool>
5、在自定义方法中使用
public static string ProcessData(string input, Func<string, string> transformer)
{
return transformer(input);
}
// 使用
string result = ProcessData("hello", s => s.ToUpper()); // 返回 "HELLO"
与 Action<> 和 Expression<Func<>> 的区别
特性 Func<> Action<> Expression<Func<>>
返回值 有 无 有
本质 可执行的委托 可执行的委托 表达式树(代码数据结构)
用途 直接执行逻辑 执行无返回值的操作 用于分析或转换代码(如 LINQ to SQL)
示例
Func<string, int> f = s => s.Length;
Action<string> a = s => Console.WriteLine(s);
Expression<Func<string, int>> e = s => s.Length;
注意:Expression<Func<>> 可以被编译为 Func<>(通过 .Compile() 方法),但反之则不行,因为编译后的 IL 代码无法还原为原始表达式树。
应用场景
1)LINQ 查询:Where、Select、OrderBy 等方法都接受 Func<> 参数。
2)回调机制:在异步操作或事件完成后执行自定义逻辑。
3)策略模式:将算法或行为作为参数传入,实现灵活的业务逻辑。
4)依赖注入与解耦:通过传递 Func<> 避免直接依赖具体类,提高可测试性。
总之,Func<> 是 C# 中实现函数式编程风格的重要工具,它让代码更简洁、灵活且易于复用。
- 上一篇:.NET代码执行顺序探讨
- 下一篇:Expression
>与Func 的区别
-
2020-10-14JWT生成Token入门详解
-
2019-11-25dtcms常见问题
-
2011-04-01禁止网页另存为的代码
-
2010-12-09次导航是什么意思?
-
2019-03-27近期完成的部分客户网站设计稿
-
2023-04-29VMware 安装 Centos7
