gpt4 book ai didi

C# lambda 未命名参数

转载 作者:IT王子 更新时间:2023-10-29 04:39:00 25 4
gpt4 key购买 nike

是否可以通过不给它们命名来丢弃 lambda 表达式中的某些参数?例如。我必须传递一个 Action ,但我只对第二个参数感兴趣,我想写类似的东西

(_, foo) => bar(foo)
// or
(, foo) => bar(foo)

在第一种情况下它是有效的。但是第一个参数并不是真正未命名的,因为它的名字是“_”。所以当我想丢弃两个或更多时,它不起作用。我选择 _ 因为在 prolog 中它的意思是“任何值”。

所以。我的用例是否有任何特殊字符或表达式?

最佳答案

不,你不能。看着 C# language specification语法中,有两种声明 lambda 的方法:显式和隐式。两者都不允许您跳过参数的标识符或重用标识符(名称)。

explicit-anonymous-function-parameter:
anonymous-function-parameter-modifieropt type identifier

implicit-anonymous-function-parameter:
identifier

与普通函数中未使用的函数参数一样。他们必须被赋予一个名字。

当然,您可以使用 _ 作为其中一个参数的名称,因为它是一个有效的 C# 名称,但它没有任何特殊意义。

自 C# 7 起,_ 确实 具有特殊含义。不适用于 lambda 表达式参数名称,但肯定用于其他事物,例如模式匹配、解构、out 变量甚至常规赋值。 (例如,您可以使用 _ = 5; 而无需声明 _。)

关于C# lambda 未命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com