0

我想调用一个函数 N 次并以 lambda-y 方式将结果存储在一个数组中(或将结果附加到一个列表中)。我该怎么做?

我试过Enumerable.Repeat( fun(), n ).ToArray();哪个是理想的,除了 fun() 只被调用一次。

4

2 回答 2

1

调用随机函数 n 次并保留所有结果。

IEnumerable<T> CallRepeatedly<T>(Func<T> a, int count)
{
    for(int i=0; i<count; i++)
    { 
       yield return a();
    }
    yield break;
}

是你要找的东西吗?我不确定 Func 在每次调用时返回不同结果的条件,但您可以轻松地重构以将索引作为参数。

于 2013-11-03T00:37:28.127 回答
1

假设您的函数接受一个整数参数,那么这样的事情会起作用(否则用您需要的参数替换):

int n = 10;
var results = Enumerable.Range(0, n)
                        .Select(myFunction)
                        .ToArray();

在示例myFunction中将是您的返回类型的任何Func<int, T>位置。T

于 2013-11-03T00:38:13.507 回答