Меняя схему управления один раз, ты получаешь плавный переход между клавиатурой, геймпадом и любым новым контроллером без лишних правок в коде.
В этом гайде:
• Экономим время на настройку разных кнопок сразу;
• Упрощаем добавление новых контроллеров без переработки логики;
• Делаем игру доступной широкому числу игроков мгновенно.
Попробуй новую систему ввода, и твой проект сразу станет гибче, чище и дружелюбнее к игрокам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36🤝12❤8👍5
Лайфхак для target-typed new!
С C# 9 вы можете упростить создание объектов, позволяя компилятору выводить тип из контекста:
В этом блоке мы создаём коллекции: список строк и словарь, при этом тип объектов не дублируется в правой части:
Здесь показывается передача нового объекта в метод. Компилятор понимает, что
🔥 Определение класса остаётся обычным — конструктор сохраняет имя, а дальше вы можете использовать
➡️ C# Ready | #практика
С C# 9 вы можете упростить создание объектов, позволяя компилятору выводить тип из контекста:
List<string> names = new() { "Alice", "Bob", "Charlie" };
Dictionary<int, string> map = new()
{
[1] = "One",
[2] = "Two"
};В этом блоке мы создаём коллекции: список строк и словарь, при этом тип объектов не дублируется в правой части:
void PrintPerson(Person p) => Console.WriteLine(p.Name);
PrintPerson(new("Иван"));
Здесь показывается передача нового объекта в метод. Компилятор понимает, что
new("Иван") создаёт Person:class Person
{
public string Name { get; }
public Person(string name) => Name = name;
}
🔥 Определение класса остаётся обычным — конструктор сохраняет имя, а дальше вы можете использовать
new("…") там, где ожидается Person.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤6👍3🤝1
В простом окне терминала рождается динамика стратегии — всего девять клеток, но достаточно, чтобы почувствовать азарт и победу в чистом виде.
В этой задаче:
• Показывает, как из обычного ввода сделать живую механику;
• Учит коду реагировать на игрока, как на событие;
• Демонстрирует, что даже консоль может быть интерактивной.
Игра заканчивается быстро, но ощущение победы остаётся дольше, чем кажется.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥11👍5🤝3
Как работать с многострочными строками без «+» и «\n»?
При вставке длинных
До C# 11 приходилось писать так:
С C# 11 можно использовать raw-строки:
🔥 Это позволяет вставлять
➡️ C# Ready | #совет
При вставке длинных
SQL, JSON или других текстовых фрагментов код засоряется экранированием и конкатенациями, из-за чего теряется читаемость и становится сложнее вносить правки.До C# 11 приходилось писать так:
var sql = "SELECT Id, Name\n" +
"FROM Users\n" +
"WHERE Name LIKE '%Иван%'";
С C# 11 можно использовать raw-строки:
var sql = """
SELECT Id, Name
FROM Users
WHERE Name LIKE '%Иван%'
""";
🔥 Это позволяет вставлять
SQL, JSON, XML и любые другие большие тексты без экранирования и конкатенаций — код чище и понятнее.Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥8❤7
В этой шпаргалке вы узнаете, как грамотно управлять культурными настройками приложения: менять формат дат и чисел под привычки пользователя, использовать инвариантные форматы для надёжной сериализации, обращаться к кешированным объектам по коду языка и на лету адаптировать шаблоны выводаPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤5🤝5👍2
Эффективная отмена операций с CancellationToken!
Часто нужно прерывать долгие операции по таймауту или по внешнему сигналу — как сделать это просто и гибко?
Сначала создаём источник с таймаутом:
Далее связываем таймаутный токен с внешним и передаём в асинхронный метод:
🔥 Главное — комбинируйте таймауты и внешние токены для гибкой и надёжной отмены операций.
➡️ C# Ready | #практика
Часто нужно прерывать долгие операции по таймауту или по внешнему сигналу — как сделать это просто и гибко?
Сначала создаём источник с таймаутом:
var ctsTimeout = new CancellationTokenSource();
ctsTimeout.CancelAfter(TimeSpan.FromSeconds(5));
var timeoutToken = ctsTimeout.Token;
Далее связываем таймаутный токен с внешним и передаём в асинхронный метод:
var ctsExternal = new CancellationTokenSource();
using var linkedCts = CancellationTokenSource.CreateLinkedTokenSource(
timeoutToken, ctsExternal.Token);
await SomeLongOperationAsync(linkedCts.Token);
🔥 Главное — комбинируйте таймауты и внешние токены для гибкой и надёжной отмены операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15👍7🔥4
Асинхронность — это не просто техника ускорения, а способ сохранить живость интерфейса. Правильное использование
await делает взаимодействие с приложением плавным, отзывчивым и естественным для пользователя.В этом гайде:
• Помогаем коду “дышать” без остановки и ожидания
• Делаем действия пользователя мгновенно ощущаемыми и живыми
• Учимся писать обработчики, которые не тормозят весь поток
Асинхронный код — это про комфорт: интерфейс работает, пока программа думает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍10❤4🤝2😁1