Default parameter values in C#’s lambda expressions – Education Career Blog

Good afternoon,

Can someone please tell me if I can set default parameter values when using lambda expressions in C#? For example, if I have the code

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

how can I set IntTmp‘s default value to, for example, two? The usual way to set default parameter values in a method seems not to work with this kind of expressions (and I really need one of this kind here).

Thank you very much.

,

You really cannot unless you do it via composition of functions:

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

public static Func<String, IEnumerable<String>> SomeFunctionDefaulted =
                                  strTmp => SomeFunction(strTmp, 2);

You could also try modifying SomeFunction to take a nullable, but then you would have to explicitly pass null for a value and check for that in the method body.

Leave a Comment