让我说我有一个方法
public static void Blah(object MyMethod) { // i dont know what to replace object with
MyMethod; // or however you would use the variable
}
所以基本上我需要能够通过变量引用一个方法
答案 0 :(得分:6)
您正在寻找a delegate。
public delegate void SomeMethodDelegate();
public void DoSomething()
{
// Do something special
}
public void UseDoSomething(SomeMethodDelegate d)
{
d();
}
用法:
UseDoSomething(DoSomething);
或者使用lambda语法(如果DoSomething
是Hello World):
UseDoSomething(() => Console.WriteLine("Hello World"));
public void UseDoSomething(Action d)
如果您需要从代理中返回一个值(例如我的示例中的int
),您可以使用:
public void UseDoSomething2(Func<int> d)
答案 1 :(得分:4)
.Net框架内置了许多委托类型,这使得这更容易。因此,如果MyMethod
采用string
参数,您可以执行此操作:
public static void Blah(Action<string> MyMethod) {
MyMethod;
}
如果需要两个int
并返回long
,您可以这样做:
public static void Blah(Func<int, int, long> MyMethod) {
MyMethod;
}
Action<>
和Func<>
的版本具有不同数量的类型参数,您可以根据需要指定这些参数。