【发布时间】:2017-03-05 16:32:25
【问题描述】:
大家好!假设我有一个函数,包含 2 个变体的 lambda 表达式:
DoSomething('a', x => { });
DoSomething('b', x => { Console.WriteLine(x); })
在程序的后面,我需要根据表达式中的方法是否包含一些代码来执行一些操作。在我看来,它必须看起来像这样:
public void DoSomething (char symbol, Action<string> execute)
{
if (execute.Method.IsEmpty)
DoThis(...)
else
DoThat(...)
}
但是,当然,我无法准确地写出这个。那么,如何检查函数中是否有命令呢?
【问题讨论】:
-
这不明智,使用 DoSomething('a', null) 代替。现在很简单。
-
传入的
Action与任何其他函数相同——您不应该知道它的作用。如果您需要一个调用者提供Action的路径和另一个调用者不提供任何内容的路径,请提供一个不采用Action的方法重载。