在C#中,我有以下函数定义:
public static TResult SomeParentFunctionName<TSource, TResult>(
TSource SomeValue,
Func<TSource, TResult> ChildFunction1,
Func<TSource, TResult> ChildFunction2)
这个函数接受SomeValue
,然后调用ChildFunction1
和ChildFunction2
。
根据我的业务规则,我始终需要运行ChildFunction1
,但只有有时候需要运行ChildFunction2
。
我能否将ChildFunction2
作为可选参数?我该如何实现?如何知道是否传入了它?
我考虑过的选项:
我可以创建两个
SomeParentFunctionName
函数,一个带有ChildFunction2
,一个没有。我可以传入一个什么也不做的空白函数 - 但这不是好的实践。
ChildFunction2
?你知道在调用SomeParentFunctionName
之前必须运行它吗?如果是这样,我会说重载可能是最直接的方法。 - Dave ZychSomeParentFunctionName
的用户已经知道是否会调用ChildFunction2
。是的,这是我的考虑之一。你能想到另一种方法吗? - Simcha Khabinskynull
(我从来不喜欢这种方式),或者使用可选参数并将其设置为 null,这样会更加简洁。 - Dave Zych