将方法作为参数发送到另一个方法(说明)

Send method as the parameter to another method (clarification)

我知道这个问题已经以多种形式被问过很多次,但现在我想澄清一些事情。

2种方法:默认方法和附加方法。首先我们执行默认方法和基本操作。然后,如果将其他方法作为参数传递给默认方法,也执行它。

???void Default_Method(???Additional_Method)
{
     //default logic
     //after default logic, call additional method if its name was specified
     ??? - how to call the specified additional method
}

???void Additional_Method()
{
     //additional logic
}

... 

还有现在最有意思的地方

protected void Page_Load(object sender, EventArgs e)
{
    Default_Method(???Additionl_Method???) //here I need to pass Additional_Method as a parameter
}

问题:

如何正确声明方法。我用 ??? 标记了要澄清的地方。

以及如何让附加方法成为默认方法的可选参数?不需要的时候传Null就够了吗?

这个问题的原因

我没有找到关于如何操作的一般说明。所有示例都充满了具体细节,人们在给方法命名时会使用自己的理解,并且在他们的示例中不太清楚哪一个做了什么,这就是为什么我决定创建具有中性名称的线程。

恕我直言,最好使用操作:

    void Additional_Method()
    {

    }

    void Default_Method(Action a)
    {
        a.Invoke();
    }

在您的主要代码中使用

 Default_Method(Additional_Method);
void Default_Method(Action additionalMethod = null)
{
    //default logic         
    //after default logic, call additional method if its name was specified

    //This if is needed to avoid NullReferenceException
    if (additionalMethod != null)
        additionalMethod();
}

void Additional_Method()
{
    //additional logic
}

protected void Page_Load(object sender, EventArgs e)
{
     Default_Method(Additional_Method);
     //OR
     Default_Method();
     //OR
     Default_Method(null);
     //OR
     Default_Method(() => { /*Do something*/}); 
}

在此示例中,我假设这两种方法都在与 Page_Load 相同的 class 中定义。