2

さまざまな関数のベンチマークを実行していて、1 つの関数を呼び出して関数 foo を n 回実行したいとします。

すべての関数の戻り値の型が同じ場合、次のことができます

static void benchmark(Func<ReturnType> function, int iterations)
{
    Console.WriteLine("Running {0} {1} times.", function.Method.Name, iterations);
    Stopwatch stopwatch = new Stopwatch();
    stopwatch.Start();
    for (int i = 0; i < iterations; ++i)
    {
        function();
    }
    stopwatch.Stop();
    Console.WriteLine("Took {0} to run {1} {2} times.", stopwatch.Elapsed, function.Method.Name, iterations);
}

しかし、テストしている関数の戻り値の型が異なる場合はどうなるでしょうか? ジェネリック型の関数を受け入れることはできますか? 使ってみFunc <T>たけどダメ。

4

3 に答える 3

1
static void benchmarkFoo<T>(Func<T> foo, int n)
                         ^       ^

上記の場所の一般的なパラメーターに注意してください。それは十分です。

于 2013-10-17T20:12:35.153 に答える