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

7

下午好,

请问我在使用C#中的lambda表达式时是否可以设置默认参数值?例如,如果我的代码如下:

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

我怎样才能将IntTmp的默认值设置为例如两个?在方法中设置默认参数值的通常方式似乎不能用于这种类型的表达式(而我确实需要这种类型的一种)。

非常感谢。


你可能需要使用 .NET 4.0 http://msdn.microsoft.com/zh-cn/library/dd264739.aspx - hunter
1个回答

1

除非您通过函数组合来实现,否则您真的无法做到:

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

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

你也可以尝试修改SomeFunction函数来接受一个可空类型,但这样你就必须显式地传递null值并在方法体中进行检查。

我不记得做过这样的事,而且这似乎非常合理,但另一方面,我更愿意避免使用它,以免有许多用于同一件事的方法。无论如何,非常感谢您! - Miguel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接