【发布时间】:2021-05-31 17:29:59
【问题描述】:
我正在开发一个应用程序,我们需要记录匿名 (lambda) 函数的整个语句。
这意味着“LogAction”方法应该记录所有作为动作传递的语句。
protected void LogAction(Action action)
{
/*
Log the statement(s) passed to this method i.e. should print
var a = 10;
var b = 20;
Console.WriteLine($"Sum of {a} and {b} is {a+b}");
*/
}
LogAction(() =>
{
var a = 10;
var b = 20;
Console.WriteLine($"Sum of {a} and {b} is {a+b}");
});
【问题讨论】:
-
将应用程序逻辑暴露给外部。不是最好的想法。这是为了调试目的吗?
-
是的,仅用于调试目的。
-
再想一想:如果它们是匿名的,并且您确实遇到了反复出现的问题,为什么不让它们不匿名并编写单元测试?
-
请考虑编译器可能会将您的示例优化为
Console.WriteLine($"Sum of 10 and 20 is 30");。 -
^^ 它在 Debug 和 Release 中可能会有所不同。
标签: c# lambda anonymous-methods