Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26❤11👍7🤝6
👍17🤝11🔥5😁5
Когда кнопки перестают напрямую ссылаться на игровую логику, интерфейс становится легче перестраивать и переносить между сценами.
В этом посте разбираем:
• События освобождают UI от лишних связей и настроек;
• Логика реагирует гибко и не зависит от конкретных экранов;
• Проект выдерживает изменения без поломок и переработок
Такой способ организации UI делает игру стабильнее, понятнее и легче расширяемой.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥11👍6🤝3😁1
Быстрые lookup-таблицы с FrozenDictionary в .NET 8!
Когда у тебя есть справочники «один раз создал — тысячу раз читаешь» (коды стран, статусы, типы операций), обычный
Сначала собираем данные как обычно, затем «замораживаем» словарь:
• строится один раз при старте,
• дальше не изменяется,
• lookup обычно быстрее, чем у обычного
Для наборов без значений — то же самое, но через
🔥 Главное — если коллекция инициализируется один раз и дальше только читается, переводи её в
➡️ C# Ready | #практика
Когда у тебя есть справочники «один раз создал — тысячу раз читаешь» (коды стран, статусы, типы операций), обычный
Dictionary ок, но в .NET 8 можно выжать ещё больше скорости и меньше памяти.Сначала собираем данные как обычно, затем «замораживаем» словарь:
using System.Collections.Frozen;
var countryCodes = new Dictionary<string, string>
{
["FI"] = "Finland",
["SE"] = "Sweden",
["NO"] = "Norway",
["DK"] = "Denmark",
};
// Один раз преобразуем в FrozenDictionary
var frozenCountryCodes = countryCodes.ToFrozenDictionary();
// Дальше работаем только с frozen-версией
if (frozenCountryCodes.TryGetValue("FI", out var name))
{
Console.WriteLine(name); // Finland
}
FrozenDictionary оптимизирован под частые чтения:• строится один раз при старте,
• дальше не изменяется,
• lookup обычно быстрее, чем у обычного
Dictionary,Для наборов без значений — то же самое, но через
FrozenSet:using System.Collections.Frozen;
var euCountries = new[] { "FI", "SE", "NO", "DK" }.ToFrozenSet();
if (euCountries.Contains("FI"))
{
Console.WriteLine("EU country");
}
FrozenDictionary/FrozenSet.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍5
Как сократить цепочки if/else по статусам?
Во многих проектах бизнес-логика по статусам размазана по коду длинными цепочками if/else: для каждого нового состояния появляется ещё один блок, читать и поддерживать это всё становится всё сложнее
Классический вариант быстро разрастается:
Такой код легче читать глазами: видно все варианты сразу, проще добавить новый статус и сложнее забыть про
🔥 Хорошо заходит для маппинга
➡️ C# Ready | #совет
Во многих проектах бизнес-логика по статусам размазана по коду длинными цепочками if/else: для каждого нового состояния появляется ещё один блок, читать и поддерживать это всё становится всё сложнее
Классический вариант быстро разрастается:
string text;
if (status == OrderStatus.New)
text = "Новый заказ";
else if (status == OrderStatus.Paid)
text = "Заказ оплачен";
else
text = "Неизвестный статус";
switch-expression делает то же самое компактным выражением:var text = status switch
{
OrderStatus.New => "Новый заказ",
OrderStatus.Paid => "Заказ оплачен",
_ => "Неизвестный статус"
};
Такой код легче читать глазами: видно все варианты сразу, проще добавить новый статус и сложнее забыть про
default. enum → текст, выбора цвета, типа уведомления или уровня логирования.Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥9👍6
Работа с файлами кажется сложной, пока не увидишь наглядные примеры: несколько понятных приёмов уже закрывают чтение, запись и простое логирование.
В этом гайде:
• Покажем, как аккуратно читать содержимое текстового файла;
• Разберём, как сохранять строки и дописывать новые;
• Поможем перестать бояться путей, ошибок и пустых файлов.
Освоив базовые операции с файлами, ты сделаешь маленькие утилиты гораздо полезнее в повседневных задачах разработки.
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