int 配列を操作するメソッドのパフォーマンス測定を行いたいので、次のクラスを作成しました。
public class TimeKeeper
{
public TimeSpan Measure(Action[] actions)
{
var watch = new Stopwatch();
watch.Start();
foreach (var action in actions)
{
action();
}
return watch.Elapsed;
}
}
しかしMeasure
、以下の例ではメソッドを呼び出すことができません:
var elpased = new TimeKeeper();
elpased.Measure(
() =>
new Action[]
{
FillArray(ref a, "a", 10000),
FillArray(ref a, "a", 10000),
FillArray(ref a, "a", 10000)
});
次のエラーが表示されます。
Cannot convert lambda expression to type 'System.Action[]' because it is not a delegate type
Cannot implicitly convert type 'void' to 'System.Action'
Cannot implicitly convert type 'void' to 'System.Action'
Cannot implicitly convert type 'void' to 'System.Action'
配列で機能するメソッドは次のとおりです。
private void FillArray(ref int[] array, string name, int count)
{
array = new int[count];
for (int i = 0; i < array.Length; i++)
{
array[i] = i;
}
Console.WriteLine("Array {0} is now filled up with {1} values", name, count);
}
私が間違っていることは何ですか?