Подтвердить что ты не робот

Подчеркивающая стрела (_ =>...) Что это?

Чтение через С# в двух словах я заметил этот бит кода, с которым я никогда не сталкивался:

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

Что это за символ подчеркивания, за которым следует стрелка? Я видел Лямбда-выражения, написанные аналогичным образом, но ничего с подчеркиванием.

4b9b3361

Ответ 1

Это просто лямбда-выражение, которое использует _ вместо x для своего параметра. _ является допустимым идентификатором, поэтому его можно использовать в качестве имени параметра.

Как упомянуто в комментариях, среди некоторых разработчиков принято называть его _, чтобы указать, что оно на самом деле не используется лямбда-выражением, но не более того: соглашение.

Обратите внимание, что это не то же самое, что discard (введенный через несколько лет после этого ответа), которая представляет собой специальную переменную для назначения значений, которые не будут использоваться и вместо этого будут отброшены. В отличие от отброшенных значений, параметры _ продолжают существовать в области лямбды; они просто нигде не используются в лямбда-выражении. И одновременно может быть только один _.