2010-10-21 65 views
7

下午好,默认参数值表达式

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

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

我怎么能IntTmp的默认值设置为,例如,二?在方法中设置默认参数值的常用方法似乎不适用于这种表达式(我真的需要这种类型的其中一种)。

非常感谢。

+0

您可能需要使用.NET 4.0 http://msdn.microsoft.com/en-us/library/dd264739.aspx – hunter 2010-10-21 13:56:18

回答

1

你真的不能,除非你通过的功能组成做到这一点:

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

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

您也可以尝试修改SomeFunction拿空的,但你必须明确地传递null值,并检查该在方法体中。

+0

我不记得做过这样的事情,而且看起来很合理,但在另一方面,我宁愿避免使用它,以避免为同样的事情制定多种方法。无论如何谢谢你! – Miguel 2010-10-21 14:00:11