Работа с файлами кажется сложной, пока не увидишь наглядные примеры: несколько понятных приёмов уже закрывают чтение, запись и простое логирование.
В этом гайде:
• Покажем, как аккуратно читать содержимое текстового файла;
• Разберём, как сохранять строки и дописывать новые;
• Поможем перестать бояться путей, ошибок и пустых файлов.
Освоив базовые операции с файлами, ты сделаешь маленькие утилиты гораздо полезнее в повседневных задачах разработки.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤8👍3🤝2😁1
Как создавать коллекции без десятка Add?
Во многих местах сначала создаём коллекцию, а потом построчно заполняем её — кода получается больше, чем самих данных:
С инициализаторами коллекций данные видно сразу, без шума вокруг:
🔥 Такой стиль хорошо заходит для константных списков, словарей настроек, маппингов enum → текст и тестовых данных — код читается как набор значений, а не как сценарий заполнения.
➡️ C# Ready | #совет
Во многих местах сначала создаём коллекцию, а потом построчно заполняем её — кода получается больше, чем самих данных:
var ids = new List<int>();
ids.Add(1);
ids.Add(2);
ids.Add(3);
var byId = new Dictionary<int, string>();
byId.Add(1, "Alice");
byId.Add(2, "Bob");
С инициализаторами коллекций данные видно сразу, без шума вокруг:
var ids = new List<int> { 1, 2, 3 };
var byId = new Dictionary<int, string>
{
[1] = "Alice",
[2] = "Bob"
};Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍6
Мы превратим обычный ввод из консоли в небольшое исследование: возьмём текст, очистим его и соберём статистику по длинам слов, чтобы увидеть структуру фразы под новым углом.
В этой задаче:
• Превратим сырой набор строк в понятный материал для анализа;
• Увидим, как разные слова распределяются по длине и частоте;
• Сделаем простую таблицу, которая сразу показывает скрытые закономерности.
И в итоге получим маленький инструмент, который помогает внимательнее смотреть на любой текст.
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