C# 函数作为方法的参数
您可以像在JavaScript中一样在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() 。。。大致
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");
}