Size: a a a

var chat = new Chat();

2021 July 12

VB

Vladislav Bardin in var chat = new Chat();
Если я правильно понял, это все завязано на Pattern Matching?
источник

VL

Vova Lantsov in var chat = new Chat();
Или даже

object switch
{
 { } variable => ...
}
источник

VL

Vova Lantsov in var chat = new Chat();
Да
источник

VB

Vladislav Bardin in var chat = new Chat();
Что ж, нужно будет почитать, как он работает..
источник

VL

Vova Lantsov in var chat = new Chat();
Или даже так

case { Property: { InnerProperty: { } } }
источник

VL

Vova Lantsov in var chat = new Chat();
Проверит что объект не null, Property != null, InnerProperty != null
источник

VB

Vladislav Bardin in var chat = new Chat();
А еще такой вопрос, есть ли возможность как-то задать особый конвертер для enum`ов во всем проекте, если я использую newtosoftJson. Не нравится мне над каждым enum`ом писать атрибут и указывать чем его нужно сериализовать
источник

VL

Vova Lantsov in var chat = new Chat();
Да можно, регистрируешь конвертер глобально
источник

VB

Vladislav Bardin in var chat = new Chat();
Я уже понял, что довольно интересная, но чтобы вникнуть нужно время
источник

VL

Vova Lantsov in var chat = new Chat();
В аспе есть метод аля ConfigureJson
Или
AddJsonOptions
Не помню точно
источник

VB

Vladislav Bardin in var chat = new Chat();
Так? или я что-то не правильно понял?
источник

VL

Vova Lantsov in var chat = new Chat();
Лучше не злоупотреблять, не самая читаемая конструкция) особенно для новичков
источник

VL

Vova Lantsov in var chat = new Chat();
Да, должно работать
источник

VB

Vladislav Bardin in var chat = new Chat();
Думаю да, нужно привыкнуть. Но выглядит интересно
источник

VL

Vova Lantsov in var chat = new Chat();
На самом деле pattern matching очень удобен для тг ботов
источник

VB

Vladislav Bardin in var chat = new Chat();
Как раз его и делаю. Мне кажется его очень удобно можно использовать для работы с Update
источник

VL

Vova Lantsov in var chat = new Chat();
Из-за того, что не нужно для каждого свойства делать отдельную проверку. В одном блоке switch можешь сразу и Text, и Contact, и любое другое свойство класса проверить
источник

VL

Vova Lantsov in var chat = new Chat();
await update switch
{
   { Message: { } m } => HandleMessageAsync(m),
   { CallbackQuery: { } cb } => HandleCallbackQuery(cb),
   _ => Task.CompletedTask
}

А внутри HandleMessage, например

switch (message)
{
   case { Text: "/start" }:
       ...
       break;

   case { Text: { } t }:
       ...
       break;

   case { Contact: { } c }:
       ...
       break;
}
источник

VB

Vladislav Bardin in var chat = new Chat();
К сожалению нет(
источник

VL

Vova Lantsov in var chat = new Chat();
{ } гарантирует что свойство не null
источник