c#可选的Func参数

Sim*_*sky 5 c# parameters anonymous-function func

在C#中,我有以下函数定义:

public static TResult SomeParentFunctionName<TSource, TResult>(TSource SomeValue,Func<TSource, TResult> ChildFunction1, Func<TSource, TResult> ChildFunction2)
Run Code Online (Sandbox Code Playgroud)

此函数接受SomeValue然后调用ChildFunction1ChildFunction2

根据我的业务规则,我总是需要运行ChildFunction1,但有时只需要运行ChildFunction2.

我可以制作ChildFunction2一个可选参数吗?我该怎么做呢?我怎么知道它是否已被传入.

我考虑的选项:

1)我可以创建两个SomeParentFunctionName函数,一个有ChildFunction2一个,一个没有.

2)我可以传递一个空白的函数,它不会做任何事情 - 但这不是一个好习惯.


注意:对于那些想要开始对这个问题大喊大叫的人,如果你无法帮助,那就不要了.

Nei*_*ith 8

当然,只需将其设置为null:

public static TResult SomeParentFunctionName<TSource, TResult>(
    TSource SomeValue,
    Func<TSource, TResult> ChildFunction1, 
    Func<TSource, TResult> ChildFunction2 = null)
{
    ...
    if (ChildFunction2 != null)
        ChildFunction2();
}
Run Code Online (Sandbox Code Playgroud)

如果你想传递一个函数ChildFunction2,请继续执行.如果你不想传递任何东西,只需在调用函数时省略它.

这实际上就是你所谓的 - 可选参数