我想知道是否有人可以用一些清楚的例子来解释一下Func<int, string>是什么以及它是如何使用的.

推荐答案

你对代表大体熟悉吗?我有一个关于delegates and events的页面,如果不是这样的话可能会有帮助,尽管它更适合于解释两者之间的区别.

Func<T, TResult>只是一个普通的委托——通过用声明中相应的type arguments(intstring)替换type parameters(TTResult)来了解它在任何特定情况下的含义.为了避免混淆,我还将其重命名:

string ExpandedFunc(int x)

换句话说,Func<int, string>是一个委托,它代表一个接受int参数并返回string的函数.

在LINQ中,Func<T, TResult>经常用于投影和谓词(在后一种情况下,TResult总是bool).例如,可以使用Func<int, string>将整数序列投影到字符串序列中.LINQ中通常使用Lambda expressions来创建相关代理:

Func<int, string> projection = x => "Value=" + x;
int[] values = { 3, 7, 10 };
var strings = values.Select(projection);

foreach (string s in strings)
{
    Console.WriteLine(s);
}

结果:

Value=3
Value=7
Value=10

.net相关问答推荐

使用.NET 8时无法识别运行标识符

Azure Function应用程序-如何升级.NET运行时

EFCore.DbSet.Update 方法添加新行而不是更新它

查询 MongoDb 中嵌入式文档中的一个字段,该字段抛出调用运算符的左侧必须是对持久属性的直接访问

类似于字典但没有值的 C# 数据 struct

如何将 Javascript 日期时间转换为 C# 日期时间?

.NET 中的线程安全集合

C# - 获取不包括隐藏文件的文件列表

如何摆脱 VS2008 中的目标程序集不包含服务类型错误消息?

C# 的部分类是糟糕的设计吗?

C# 是否(或将)包含用于副作用验证的功能?

哪个单元测试框架?

如何结合 ||条件语句中的运算符

在 C# 中将匿名类型转换为键/值数组?

非通用 TaskCompletionSource 或替代

如何在 RabbitMQ 中设置重试次数?

DataGridView 在我的两个屏幕之一上的可怕重绘性能

判断 .NET 中的目录和文件写入权限

立即检测客户端与服务器套接字的断开连接

MemoryCache 不遵守配置中的内存限制