将方法作为构造函数的参数传递

Mah*_*kni 1 c# constructor

当我查看一些c#代码时,我发现了一个新的类声明,它传递了一个方法作为构造函数的参数.这是我第一次看到这样的东西,对我来说没什么意义.虽然整个应用程序工作正常我我仍然有兴趣知道幕后的主要想法是什么.

var c = new List<TheClass>
{
    new TheClass(TheMethod);
}

private void TheMethod()
{
    //do somthing
}
Run Code Online (Sandbox Code Playgroud)

Cod*_*ter 10

我猜TheClass构造函数接受Action委托:

public class TheClass
{
    private readonly Action _action;
    public TheClass(Action action)
    {
        _action = action;
    }
}
Run Code Online (Sandbox Code Playgroud)

这种方式TheClass可以在以后执行提供的操作,并且不止一次.

例如:

public void DoAction()
{
    _action();
}
Run Code Online (Sandbox Code Playgroud)

你也可以这样做:

var theClass = new TheClass(() => TheMethod());
Run Code Online (Sandbox Code Playgroud)