C#的lambda表达式中的默认参数值

Mig*_*uel 7 c# lambda

下午好,

有人可以告诉我,如果我在C#中使用lambda表达式时可以设置默认参数值吗?例如,如果我有代码

public static Func<String, Int32, IEnumerable<String>> SomeFunction = (StrTmp, IntTmp) => { ... },
Run Code Online (Sandbox Code Playgroud)

如何将IntTmp默认值设置为,例如,两个?在方法中设置默认参数值的常用方法似乎不适用于这种表达式(我在这里真的需要这样的一种).

非常感谢你.

Phi*_*eck 1

你真的不能,除非你通过函数组合来做到这一点:

public static Func<String, Int32, IEnumerable<String>> SomeFunction = 
                                          (StrTmp, IntTmp) => { ... };

public static Func<String, IEnumerable<String>> SomeFunctionDefaulted =
                                  strTmp => SomeFunction(strTmp, 2);
Run Code Online (Sandbox Code Playgroud)

您还可以尝试修改 SomeFunction 以采用可为 null 的值,但随后您必须显式传递 null 作为值,并在方法主体中检查该值。