说我有一个功能。我希望在变量中添加对此函数的引用。
所以我可以从变量'bar'调用函数'foo(bool foobar)',好像它是一个函数。例如。 '巴(foobar的)'
如何?
答案 0 :(得分:17)
听起来您想将Func
保存到变量中供以后使用。看看示例here:
using System;
public class GenericFunc
{
public static void Main()
{
// Instantiate delegate to reference UppercaseString method
Func<string, string> convertMethod = UppercaseString;
string name = "Dakota";
// Use delegate instance to call UppercaseString method
Console.WriteLine(convertMethod(name));
}
private static string UppercaseString(string inputString)
{
return inputString.ToUpper();
}
}
查看方法UppercaseString
如何保存到名为convertMethod
的变量中,以后可以调用该变量:convertMethod(name)
。
答案 1 :(得分:1)
您在寻找Delegates吗?
答案 2 :(得分:0)
您需要知道该功能的签名,并创建一个delegate。
现成的代表for functions that return a value和for functions that have a void return type。前面的两个链接都指向可能最多需要15个类型参数的泛型类型(因此可以用于承担那么多参数的函数)。
如果您打算在大于本地范围的范围内使用对函数的引用,则可以考虑defining your own custom delegates。但大多数情况下,Action
和Func
做得非常好。
<强>更新强>
关于在定义自己的代表之间做出选择,请查看this question。
答案 3 :(得分:0)
使用代表
void Foo(bool foobar)
{
/* method implementation */
}
使用Action
委托
Public Action<bool> Bar;
Bar = Foo;
调用该函数;
bool foobar = true;
Bar(foobar);