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

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

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

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

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

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26❤5👍5🤝1
Что же выведет консоль?
Anonymous Quiz
37%
A
33%
B
17%
C
13%
D
❤6👍4🔥1
👩‍💻 Кортежи без классов и аллокаций!

В прошлый раз говорили про деконструкцию и производительность. ValueTuple хорошо ложится в методы, паттерны и цепочки

Что важно знать:

• Упрощает возврат значений;

•
Работает с LINQ;

•
Имеет имена полей.


Это помогает возвращать сразу несколько значений — без классов, аллокаций и Item1.

➡ C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11🤝7❤3
C# Ready | Unity pinned «👋🏼 Приветствую в C# Ready! C# — современный, мощный и элегантный язык программирования от Microsoft. Он объединяет в себе простоту, безопасность и гибкость, позволяя создавать всё. Это авторский ✈️ канал, который поможет вам изучить C# с нуля и глубже понять…»
ValueTask vs Task — когда можно обойтись без лишних аллокаций!

Иногда асинхронный метод чаще всего завершается синхронно, а возвращая Task, мы платим за каждую аллокацию объекта-представителя:
// «До»: всегда возвращаем Task, даже если результат готов сразу
public async Task<int> GetCountAsync()
{
if (cache.TryGetValue("count", out var value))
return value;
var fresh = await LoadCountFromDbAsync();
cache["count"] = fresh;
return fresh;
}


Если кэш почти всегда заполнен, каждый вызов создаёт лишний Task-объект:
// «После»: возвращаем ValueTask при готовом результате
public ValueTask<int> GetCountAsync()
{
if (cache.TryGetValue("count", out var value))
return new ValueTask<int>(value); // без аллокации state-machine
return new ValueTask<int>(LoadCountFromDbAsync());
}


При cache hit мы сразу упаковываем значение в ValueTask<int>, не создавая асинхронной машины состояний.

При «промахе» возвращаем ValueTask, обёрнутый вокруг реального Task.

🔥 Использование ValueTask там, где результат часто готов сразу, сокращает количество выделений в куче и снижает нагрузку сборщика мусора.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤6🔥3
📱 Async/await против корутин в Unity!

Кратко сравниваем задачи C# и корутины Unity, показывая, где каждая техника эффективнее в реальных сценариях.

Что важно знать:

• Ошибки ловятся сразу;

•
Отмена делается просто;

•
Изображение остаётся плавным.


Совмещая задачи и корутины, ты получишь чистый код и устойчивую производительность во всех игровых ситуациях.

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥27👍6❤4🤝3
Параллельная обработка коллекции через Parallel.ForEach!

Когда нужно быстро выполнить CPU-интенсивную работу над большим набором данных, можно распараллелить обработку без сложной ручной работы с потоками:
// Исходная коллекция—скажем, список чисел
var numbers = new int[1_000_000];
new Random().NextBytes(new Span<byte>(new byte[0])); // просто для примера
for (int i = 0; i < numbers.Length; i++)
numbers[i] = i;


Вызовем Parallel.ForEach, соберём результаты в потокобезопасную коллекцию и зададим максимальное число параллельных задач:
var results = new ConcurrentBag<int>();
var options = new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount };

Parallel.ForEach(numbers, options, number =>
{
// эмуляция тяжёлой работы
int squared = number * number;
results.Add(squared);
});


ConcurrentBag<T> гарантирует, что в него можно безопасно записывать из разных потоков без блокировок:
Console.WriteLine($"Обработано элементов: {results.Count}");
Console.WriteLine($"Первый результат: {results.Min()} | Последний: {results.Max()}");


🔥 Совет: поэкспериментируйте с MaxDegreeOfParallelism — на некоторых задачах меньшее число потоков даёт лучшее быстродействие за счёт меньшего оверхеда переключений.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤1
👩‍💻 Мгновенный аплоад в Google Drive!

С помощью пары методов перенесите любой файл на диск, получив мгновенную ссылку для удобного просмотра.

Что важно знать:

• Файл доступа рядом;

• Доступ только нужный;

• Большие файлы делим.


Автоматизируйте рутину и делитесь ссылками моментально, экономя время коллег и клиентов при повторных операциях загрузки.

➡️ C# Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥6👍4😁2👎1