Мы превратим обычный ввод из консоли в небольшое исследование: возьмём текст, очистим его и соберём статистику по длинам слов, чтобы увидеть структуру фразы под новым углом.
В этой задаче:
• Превратим сырой набор строк в понятный материал для анализа;
• Увидим, как разные слова распределяются по длине и частоте;
• Сделаем простую таблицу, которая сразу показывает скрытые закономерности.
И в итоге получим маленький инструмент, который помогает внимательнее смотреть на любой текст.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤7👍3👎2🤝2
Удобный System.Text.Json в .NET 8 без Newtonsoft!
Во многих проектах до сих пор тянут
Сначала настраиваем опции сериализации и включаем
Описываем интерфейс и полиморфные реализации через атрибуты:
Сериализуем команду в
🔥 Главное — в .NET 8
➡️ C# Ready | #практика
Во многих проектах до сих пор тянут
Newtonsoft.Json только ради пары фич. В .NET 8 стандартный System.Text.Json уже закрывает большинство кейсов.Сначала настраиваем опции сериализации и включаем
snake_case:using System;
using System.Text.Json;
using System.Text.Json.Serialization;
var options = new JsonSerializerOptions
{
// Имена свойств в JSON будут в snake_case
PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower,
// Красивый формат для логов/отладки
WriteIndented = true
};
Описываем интерфейс и полиморфные реализации через атрибуты:
// Включаем полиморфную сериализацию по интерфейсу
[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type")]
[JsonDerivedType(typeof(CreateUserCommand), typeDiscriminator: "create")]
[JsonDerivedType(typeof(DeleteUserCommand), typeDiscriminator: "delete")]
public interface ICommand { }
public record CreateUserCommand(string UserName) : ICommand;
public record DeleteUserCommand(Guid UserId) : ICommand;
Сериализуем команду в
JSON и восстанавливаем обратно в интерфейс:// Работаем через интерфейс — внутри может быть любая команда
ICommand cmd = new CreateUserCommand("test_user");
// Сериализация с нашими настройками
var json = JsonSerializer.Serialize(cmd, options);
Console.WriteLine(json);
// Десериализация обратно в ICommand
var restored = JsonSerializer.Deserialize<ICommand>(json, options);
System.Text.Json уже умеет удобный snake_case и полиморфную сериализацию по интерфейсам, так что во многих сервисах можно спокойно обходиться без Newtonsoft.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7❤5
Асинхронный код помогает программе оставаться живой и отзывчивой, позволяя выполнять долгие операции в фоне, не блокируя остальные части приложения и не создавая ощущение задержек.
В этом гайде:
• Показываем, как ожидание не мешает выполнению программы;
• Объясняем, почему асинхронность делает интерфейс плавнее;
• Помогаем понять, где фоновые задачи действительно полезны.
Асинхронность — это способ делать больше без тормозов, сохраняя код простым и понятным.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤9👍6🤝2😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍6🤝3
🔥9👍6😁3❤1
Когда события завязаны на время, удобнее описывать поведение как последовательность шагов с паузами, чем вручную крутить таймеры и внутренние флаги.
Коротко о корутинах:
• Помогают вынести ожидания и задержки из игрового цикла;
• Делают последовательные события читаемыми, как сценарий или раскадровка;
• Упрощают отладку странных зависаний, редких триггеров и переходов.
Приручи сценарии времени, и игра откликнется стабильностью, плавностью, ясной логикой и быстрыми изменениями в будущем.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤11👍6🤝4😁1