2010-10-21 93 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