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

发布于 2024-09-28 08:01:03 字数 311 浏览 2 评论 0原文

下午好,

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

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

如何将 IntTmp 的默认值设置为例如 2?在方法中设置默认参数值的常用方法似乎不适用于这种表达式(我真的需要这种表达式之一)。

非常感谢。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瘫痪情歌 2024-10-05 08:01:03

除非通过函数组合来做到这一点,否则您确实不能这样做:

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

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

您还可以尝试修改 SomeFunction 以采用可为 null 的值,但随后您必须显式传递 null 值并在方法主体中检查该值。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文