C# Ready | Unity
10.6K subscribers
1.51K photos
84 videos
755 links
Авторский канал по разработке на C# и Unity.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Cотрудничество: @energy_c

Реклама на бирже: https://telega.in/channels/csharp_ready/card

РКН: https://clck.ru/3SBaT3
Download Telegram
👩‍💻 Когда await спасает интерфейс от немого зависания?

Асинхронность — это не просто техника ускорения, а способ сохранить живость интерфейса. Правильное использование await делает взаимодействие с приложением плавным, отзывчивым и естественным для пользователя.

В этом гайде:
• Помогаем коду “дышать” без остановки и ожидания

• Делаем действия пользователя мгновенно ощущаемыми и живыми

•
Учимся писать обработчики, которые не тормозят весь поток


Асинхронный код — это про комфорт: интерфейс работает, пока программа думает.

➡️ C# Ready | #гайд
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
🔥11❤7👍4
Что же выведет консоль?
Anonymous Quiz
21%
A
8%
B
50%
C
21%
D
🔥15❤5👍4
📱 Секрет хронологии скриптов для стабильности!

Едва заметное смещение порядка запуска скриптов способно породить загадочные баги, поэтому раз и навсегда стоит приручить их хронометраж в своём проекте.

В этом посте:
• Ранний запуск кода убирает неожиданные задержки во время старта;

• Чёткий порядок шагов помогает быстро ловить мелкие баги;

• Грамотная инициализация ускоряет запуск и упрощает будущие правки.


Держи сценарии по порядку, и проект отблагодарит стабильностью, ясным поведением, лёгкой отладкой и быстрой разработкой.

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍8❤4
Как проще проверять свойства объектов без нагромождения if?

Во вложенных моделях условия быстро превращаются в нечитаемые цепочки: проверяем null, диапазоны, флаги — всё в одной куче. В C# 8 появились property patterns, которые позволяют описывать форму объекта прямо в условии.

До property patterns приходилось писать так:
if (point != null &&
point.X > 0 && point.X < 10 &&
point.Y >= 5)
{
Console.WriteLine("Точка в зоне интереса");
}


С этим то же самое выражается куда короче:
if (point is { X: > 0 and < 10, Y: >= 5 })
{
Console.WriteLine("Точка в зоне интереса");
}


🔥 Такой стиль делает проверки по свойствам более декларативными: читаем условие как описание «требуемой формы» объекта, а не как техническую реализацию с кучей логических операторов

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
❤16👍11🔥5
👩‍💻 Погружаем в основы LINQ!

В этой шпаргалке вы познакомитесь с базовыми операторами LINQ для фильтрации, проекции и сортировки коллекций: от выбора элементов по условию и преобразования их в нужный формат до упорядочивания по разным ключам и «расплющивания» вложенных последовательностей.

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31🤝13👍8❤3
🔥17❤9👍3😁3🤝1
Экономьте аллокации с ValueTask!

Частые асинхронные вызовы с Task создают лишние объекты, а ValueTask поможет их избежать.

Объявляем обычный метод, возвращающий Task:
// Обычный Task<int>
async Task<int> GetValueAsync(bool cached) {
if (cached) return 42;
await Task.Delay(100);
return 42;
}


Меняем тип возвращаемого значения на ValueTask:
// ValueTask<int> для кеша
async ValueTask<int> GetValueValueAsync(bool cached) {
if (cached) return 42;
await Task.Delay(100);
return 42;
}


Сравниваем поведение при вызове:
// Вызов примеров
var r1 = await GetValueAsync(true);
var r2 = await GetValueAsync(false);
var v1 = await GetValueValueAsync(true);
var v2 = await GetValueValueAsync(false);
Console.WriteLine(r1 + r2);


🔥 Это устраняет аллокации при синхронном завершении и снижает нагрузку на сборщик мусора.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9❤7👍5
Как избавиться от бесконечных if (obj != null)?

Во вложенных моделях null-проверки быстро разрастаются:
string city;
if (user != null &&
user.Address != null &&
user.Address.City != null) {
city = user.Address.City;
} else {
city = "Не указан";
}


С null-операторами и pattern matching то же самое пишется компактно:
var city = user?.Address?.City ?? "Не указан";

if (user?.Manager is not null) {
Notify(user.Manager);
}


🔥 Так что, ?. безопасно проходит по цепочке, ?? подставляет значение по умолчанию, а is not null убирает лишние проверки.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16❤9👍5