将一个函数指向另一个

Dan*_*iel 2 c# function-pointers

假设我有两个功能:

void DoesNothing(){}

void OnlyCalledOnce(){
    //lines of code
}
Run Code Online (Sandbox Code Playgroud)

是否可以调用OnlyCalledOnce并实际运行DoesNothing?我想象这样的事情:

void DoesNothing(){}

void OnlyCalledOnce(){
    //lines of code
    OnlyCalledOnce = DoesNothing;
}
Run Code Online (Sandbox Code Playgroud)

在最后一行之后,每当我调用OnlyCalledOnce它时都会运行DoesNothing.

是否可以?

Pou*_*Bak 5

您可以OnlyCalledOnce像这样尽早返回:(假设您的DoesNothing示例实际上什么都不做 - 不需要)

bool initialized = false;

void OnlyCalledOnce()
{
    if (initialized) return;

    // firsttimecode
    initialized = true;
}
Run Code Online (Sandbox Code Playgroud)

initialized变量将true在第一次运行之后。