tags:

views:

44

answers:

1

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.

+1  A: 

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.

Philip Rieck
I didn't remember doing such a thing, and it seems very reasonable, but on the other hand I would prefer to avoid using it not to have many methods for the same thing. Thank you so much anyway!
Miguel