假设我有一个函数。我希望在变量中添加对此函数的引用。
所以我可以从变量“bar”调用函数“foo(bool foobar)”,就好像它是一个函数一样。例如。 '酒吧(foobar)'。
如何?
听起来您想将
Func
保存到变量以供以后使用。 看一下示例这里:
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)
。
使用代表
void Foo(bool foobar)
{
/* method implementation */
}
使用
Action
委托
Public Action<bool> Bar;
Bar = Foo;
调用该函数;
bool foobar = true;
Bar(foobar);
您需要知道函数的签名,并创建一个委托。
有现成的委托 用于返回值的函数和 用于具有 void 返回类型的函数。前面的两个链接都指向最多可以接受 15 个左右类型参数的泛型类型(因此可以用于接受这么多参数的函数)。
如果您打算在大于本地范围的范围内使用对函数的引用,您可以考虑定义自己的自定义委托。但大多数时候,
Action
和Func
做得很好。
更新:
看看这个问题,了解是否定义自己的委托。
您在寻找代表吗?