28

简而言之,通过 C# 阅读,我注意到了这段我从未遇到过的代码:

_uiSyncContent.Post(_ => txtMessage.Text += "Test");

下划线后跟箭头是什么?我见过以类似方式编写的 Lambda 表达式,但没有下划线。

4

1 回答 1

30

它只是一个使用_而不是x作为其参数的 lambda 表达式。_是一个有效的标识符,因此它可以用作参数名称。

正如评论中所提到的,一些开发人员将其称为约定,_以表明 lambda 表达式实际上并未使用它,但仅此而已:约定。

请注意,这与discard(在此答案后几年引入)不同,它是一个特殊变量,用于分配不会使用的值,而是将被丢弃。与丢弃的值不同,_参数继续存在于 lambda 范围内;它们只是没有在 lambda 表达式中的任何地方使用。一次只能有一个_范围。

于 2013-08-18T15:24:14.767 回答