Инициализация переменной через is not. Как работает?

Сабж
Есть такой код

async Task HandleUpdateAsync(ITelegramBotClient botClient, Update update, CancellationToken cancellationToken)
{
    // Only process Message updates: https://core.telegram.org/bots/api#message
    if (update.Message is not { } message)
        return;
    // Only process text messages
    if (message.Text is not { } messageText)
        return;

    var chatId = message.Chat.Id;

    Console.WriteLine($"Received a '{messageText}' message in chat {chatId}.");

    // Echo received message text
    Message sentMessage = await botClient.SendTextMessageAsync(
        chatId: chatId,
        text: "You said:\n" + messageText,
        cancellationToken: cancellationToken);
}

Остальной код тут https://telegrambots.github.io/book/1/example-bot.html
Вопрос в том как работает строчка if (update.Message is not { } message)
Я понимаю эту строчку так: Поле update.Message имеет тип Message. Мы проверяет соответствует ли присланное сообщение этому типу.
Далее мы проверяет само сообщения на string if (message.Text is not { } messageText) если это не текст то выходим из метода.
Если я сделаю вот так (message.Text is not string messageText) все продолжит работать. Где можно почитать про этот сахар? И как это называется?
Я имею в виду вот это { } messageText


Ответы (0 шт):