関数を N 回呼び出して、結果を配列に格納 (または結果をリストに追加) したいと思います。どうすればいいですか?
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
anyになります。Func<int, T>
T