C# 在变量中引用函数?

C# 在变量中引用函数?,c#,function,variables,reference,types,C#,Function,Variables,Reference,Types,假设我有一个函数。我希望在变量中添加对该函数的引用 所以我可以从变量“bar”调用函数“foo(bool foobar)”,就好像它是一个函数一样。例如“酒吧(foobar)” 如何操作?听起来您想将Func保存到一个变量中供以后使用。请看以下示例: 使用系统; 公共类泛型函数 { 公共静态void Main() { //实例化委托以引用UppercaseString方法 Func convertMethod=大写字符串; 字符串名称=“Dakota”; //使用委托实例调用UppercaseS

假设我有一个函数。我希望在变量中添加对该函数的引用

所以我可以从变量“bar”调用函数“foo(bool foobar)”,就好像它是一个函数一样。例如“酒吧(foobar)”


如何操作?

听起来您想将
Func
保存到一个变量中供以后使用。请看以下示例:

使用系统;
公共类泛型函数
{
公共静态void Main()
{
//实例化委托以引用UppercaseString方法
Func convertMethod=大写字符串;
字符串名称=“Dakota”;
//使用委托实例调用UppercaseString方法
Console.WriteLine(convertMethod(name));
}
私有静态字符串UppercaseString(字符串输入字符串)
{
返回inputString.ToUpper();
}
}

查看如何将方法
UppercaseString
保存到名为
convertMethod
的变量中,该变量随后可以调用:
convertMethod(name)

您需要知道函数的签名,并创建一个

有现成的代表和代表。前面的两个链接都指向最多可以使用15个左右类型参数的泛型类型(因此可以用于使用那么多参数的函数)

如果您想在大于局部作用域的范围内引用函数,可以考虑定义自己的自定义委托。但大多数时候,

Action
Func
都做得很好

更新:

查看定义自己的委托与否的选择。

您正在寻找使用委托的方法吗?

    void Foo(bool foobar)
    {
/* method implementation */
    }
使用
操作
委托

Public Action<bool> Bar;
Bar = Foo;

我想我能做到。但是,如果我使用Func方法,那么我将被锁定为最多有4个参数,这将是首选方法。我可能可以通过使用这个来获得,但如果我能绕过这个极限就好了。@Ruirize:有趣的是,我以前从未遇到过这个极限,所以我想我从来都不知道它。不过,看起来这里以前已经讨论过了,所以我们都应该看一看:听起来很棒!尽管如此,如果我确实需要为每个单元制作许多这样的函数,我可能只会使用我的Lua解释器。如果这里的假设是在.Net 3.5中您仅限于Func,那么安装反应式扩展以获得Func的定义(这也是.Net 4提供的)
Public Action<bool> Bar;
Bar = Foo;
bool foobar = true;
Bar(foobar);