引用变量中的函数?

时间:2010-12-19 23:36:02

标签: c# function variables reference types

说我有一个功能。我希望在变量中添加对此函数的引用。

所以我可以从变量'bar'调用函数'foo(bool foobar)',好像它是一个函数。例如。 '巴(foobar的)'

如何?

4 个答案:

答案 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 valuefor functions that have a void return type。前面的两个链接都指向可能最多需要15个类型参数的泛型类型(因此可以用于承担那么多参数的函数)。

如果您打算在大于本地范围的范围内使用对函数的引用,则可以考虑defining your own custom delegates。但大多数情况下,ActionFunc做得非常好。

<强>更新

关于在定义自己的代表之间做出选择,请查看this question

答案 3 :(得分:0)

使用代表

    void Foo(bool foobar)
    {
/* method implementation */
    }

使用Action委托

Public Action<bool> Bar;
Bar = Foo;

调用该函数;

bool foobar = true;
Bar(foobar);