C# 函数作为方法的参数

C# 函数作为方法的参数,c#,functional-programming,C#,Functional Programming,您可以像在JavaScript中一样在C#中执行匿名函数: var s = (function () { return "Hello World!"; }()); JavaScript: var s = (function () { return "Hello World!"; }()); C#: 上面的例子在C#中可能吗? 更新 用例:我正在迭代一组数据库,记录特定的实体。我不想在Logger的Log()内部调用我的第二个函数(F()),而是在类外部调用F() 。。。大致

您可以像在JavaScript中一样在C#中执行匿名函数:

var s = (function ()
{
    return "Hello World!";
}());
JavaScript:

var s = (function ()
{
    return "Hello World!";
}());
C#:

上面的例子在C#中可能吗?


更新

用例:我正在迭代一组数据库,记录特定的实体。我不想在
Logger
Log()
内部调用我的第二个函数(
F()
),而是在类外部调用
F()

。。。大致如下:

public void F(String databaseName)
{
}

public class Logger
{
    public void Log(Function f)
    {
        var databaseName = "";

        f(databaseName);
    }
}

绝对-您只需为该方法提供适当的签名:

public void Execute(Action<string> action)
{
    action("Hello world");
}
...
Execute(x => Console.WriteLine(x));
比如:

var s=newfunc((字符串名称)=>
{
返回string.Format(“Hello{0}!”,name);
});

您可以传递代表:

        var f = (Action<string>)
                (x =>
                     {
                         Console.WriteLine(x);
                     }
                );

        var execute = (Action<Action<string>>)
                      (cmd =>
                           {
                               cmd("Hello");
                           }
                      );
        execute(f);
var f=(操作)
(x=>
{
控制台写入线(x);
}
);
var execute=(操作)
(cmd=>
{
cmd(“你好”);
}
);
执行(f);

根据您的更新部分: 你需要一个容器来保存你的函数

 IList<Action<string>> actionList = new List<Action<Sstring>>();
然后在外部某处调用函数:

 foreach (Action<string> func in actionList)
      {
           func("databasename");
      }
foreach(操作列表中的操作函数)
{
func(“数据库名称”);
}

更新了我的问题。你能再看看吗。也许更详细一点?@roosteronacid:我的示例正是您需要的:
操作
委托基本上是一个委托,它接受字符串并对其进行操作,然后不返回任何内容。。。就像您的示例中的
F(string)
        var f = (Action<string>)
                (x =>
                     {
                         Console.WriteLine(x);
                     }
                );

        var execute = (Action<Action<string>>)
                      (cmd =>
                           {
                               cmd("Hello");
                           }
                      );
        execute(f);
 IList<Action<string>> actionList = new List<Action<Sstring>>();
actionList.Add(F);
 foreach (Action<string> func in actionList)
      {
           func("databasename");
      }