C#通过变量引用方法?

Ozt*_*aco 3 c# variables methods winapi visual-studio

让我们说我有一个方法

public static void Blah(object MyMethod) { // i dont know what to replace object with
MyMethod; // or however you would use the variable
}
Run Code Online (Sandbox Code Playgroud)

所以基本上我需要能够通过变量引用一个方法

M.B*_*ock 6

你正在寻找代表.

public delegate void SomeMethodDelegate();

public void DoSomething()
{
    // Do something special
}

public void UseDoSomething(SomeMethodDelegate d)
{
    d();
}
Run Code Online (Sandbox Code Playgroud)

用法:

UseDoSomething(DoSomething);
Run Code Online (Sandbox Code Playgroud)

或者使用lambda语法(如果DoSomething是Hello World):

UseDoSomething(() => Console.WriteLine("Hello World"));
Run Code Online (Sandbox Code Playgroud)

还有以及形式ActionFunc类型的Delegates可用的快捷语法:

public void UseDoSomething(Action d)
Run Code Online (Sandbox Code Playgroud)

如果你需要从你的委托中返回一个值(就像int在我的例子中一样),你可以使用:

public void UseDoSomething2(Func<int> d)
Run Code Online (Sandbox Code Playgroud)

注意: ActionFunc提供允许传递参数的通用重载.