将方法作为参数传递给另一个方法

Mah*_*ari 5 .net c# methods delegates winforms

我有一个名为LoadData的方法,它从DataBase获取数据并填充a DataGridView.

我正在使用秒表来测量我的方法完成它的工作所需的时间,如下所示:

private void btnLoadData_Click(object sender, EventArgs e)
{
    var sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    LoadData ();
    sw.Stop();
    ShowTakenTime(sw.ElapsedMilliseconds);
}
Run Code Online (Sandbox Code Playgroud)

我想要一些可以做的事情如下:

private void MeasureTime(Method m)
{
    var sw = new System.Diagnostics.Stopwatch();
    sw.Start();
    m.Invoke();
    sw.Stop();
    ShowTakenTime(sw.ElapsedMilliseconds);
}
Run Code Online (Sandbox Code Playgroud)

所以我可以将LoadData方法传递给它,它为我完成剩下的工作.

MeasureTime(LoadData());
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Ale*_*exH 3

对于没有参数且返回 void 的方法,您可以使用Action

    private void MeasureTime(Action m)
    {
        var sw = new System.Diagnostics.Stopwatch();
        sw.Start();
        m();
        sw.Stop();
        ShowTakenTime(sw.ElapsedMilliseconds);
    }
Run Code Online (Sandbox Code Playgroud)

如果您有一些参数或返回类型,请使用Func