函数N次,结果存储在数组中,我想在lambda-Y的方式来调用函数的N倍,结果存储在一个阵列(或结果附加到一个列表)。我会怎么做?呼叫使用兰巴
我已经试过Enumerable.Repeat(fun(), n).ToArray();
这将是理想的,但有趣的()只调用一次。
函数N次,结果存储在数组中,我想在lambda-Y的方式来调用函数的N倍,结果存储在一个阵列(或结果附加到一个列表)。我会怎么做?呼叫使用兰巴
我已经试过Enumerable.Repeat(fun(), n).ToArray();
这将是理想的,但有趣的()只调用一次。
n次调用一个随机函数并保留所有结果。
IEnumerable<T> CallRepeatedly<T>(Func<T> a, int count)
{
for(int i=0; i<count; i++)
{
yield return a();
}
yield break;
}
是这样的,你在找什么?我不确定Func会在每次调用中返回不同结果的条件,但您可以轻松地重构将索引作为参数。
我没有想到这样的事情,野! –
+1基本解释BrokenGlass的解决方案是如何工作的。我会使用'Enumerable.Range'版本,因为它具有相同的行为,但出错的可能性较小。注意:函数结束时不需要“yield break”,这是隐含的。 –
如果将它添加到像'public static class Enumerable {...}这样的小类中,就像您想要的方法不会丢失一样。 –
我们假设你的函数有一个整型参数,那么像这样的工作(否则有你所需要的参数代替):
int n = 10;
var results = Enumerable.Range(0, n)
.Select(myFunction)
.ToArray();
在这个例子中myFunction
会有什么Func<int, T>
其中T
是你的回报类型。
您需要添加更多详细信息。什么类型的对象 - 细节男人! – OneFineDay
引用lambda中的数组或列表,可能是捕获的变量。 – SJuan76
@DonA - 可以说有一个没有参数的函数,返回一个int。看来我应该可以使用Enumerator.Repeat,但我现在很累。 –