假設我正在對一堆不同的函數進行基準測試,並且我只想調用一個函數來運行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>
,但它不起作用。
解釋不起作用 –
你可以發佈你的代碼是什麼樣的你的嘗試? – Jared
如果你想在c#中使用示例,請查看LINQ。傳遞這樣的通用函數作爲參數是其基石之一...... – 2013-10-17 20:26:56