我想调用一个函数 N 次并以 lambda-y 方式将结果存储在一个数组中(或将结果附加到一个列表中)。我该怎么做?
我试过Enumerable.Repeat( fun(), n ).ToArray();
哪个是理想的,除了 fun() 只被调用一次。
调用随机函数 n 次并保留所有结果。
IEnumerable<T> CallRepeatedly<T>(Func<T> a, int count)
{
for(int i=0; i<count; i++)
{
yield return a();
}
yield break;
}
是你要找的东西吗?我不确定 Func 在每次调用时返回不同结果的条件,但您可以轻松地重构以将索引作为参数。
假设您的函数接受一个整数参数,那么这样的事情会起作用(否则用您需要的参数替换):
int n = 10;
var results = Enumerable.Range(0, n)
.Select(myFunction)
.ToArray();
在示例myFunction
中将是您的返回类型的任何Func<int, T>
位置。T