gram news
C# Ready | Unity channel avatar

C# Ready | Unity

@csharp_ready

Авторский канал по разработке на C# и Unity. Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_c РКН: https://clck.ru/3SBaT3 Реклама на бирже: https://telega.in/c/csharp_ready

ProjectsRUProgramming

10,100subscribers

Open the Channel

Latest posts

  • C# Ready | Unity

    22 Sept, 06:12

    Как в C# не забыть про ConfigureAwait(false)?Когда пишешь библиотечный async-код, часто встречается такой вариант: var json = await httpClient.GetStringAsync(url); return JsonSerializer.Deserialize<User>(json);Для приложения это обычно нормально. Но для библиотек и низкоуровневого кода часто лучше явно сказать, после await не нужно возвращаться в исходный context.Для этого используют ConfigureAwait(false): var json = await httpClient .GetStringAsync(url) .ConfigureAwait(false);После await продолжение может выполниться на любом подходящем потоке: return JsonSerializer.Deserialize<User>(json);Это особенно полезно в shared-библиотеках, SDK, инфраструктурном коде и клиентах к внешним API.Например: public async Task<User> LoadUserAsync(string id)
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    821653Open in Telegram
  • C# Ready | Unity

    21 Sept, 11:30

    Почему ToLower() перед сравнением строк может быть лишним?Когда нужно сравнить две строки без учёта регистра, часто сначала приводят обе к нижнему регистру. Код работает, но создаёт новые строки и может зависеть от текущей культуры. if (input.ToLower() == "admin") { GrantAccess(); }Для имён ролей, HTTP-заголовков, ключей конфигурации и технических идентификаторов обычно нужен предсказуемый ordinal-сравнитель. if (string.Equals(input, "admin", StringComparison.OrdinalIgnoreCase)) { GrantAccess(); }Этот вариант не создаёт две временные строки и сразу показывает намерение. Он сравнивает символы без правил конкретного языка пользователя.Особенно важно не использовать ToLower или ToUpper при проверке ключей и значений. bool json = contentType.StartsWith( "application/json", StringComparison.OrdinalIgnoreCase);
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,0908541Open in Telegram
  • C# Ready | Unity

    21 Sept, 09:30

    Не застревайте в прошлом — учитесь новым навыкам и ИИЧтобы успевать за требованиями рынка, освойте новую профессию и нейросети в Практикуме. До 30 сентября действует скидка 16% на все курсы.Выбрать курсКак всё устроено:— нейросети уже в каждом курсе: учим профессиям сразу с ИИ, чтобы ваше резюме было заметнее, а трудоустройство — увереннее;— эксперты — практики, которые двигают ИИ-индустрию: перенимайте опыт у профи из Яндекса, Сбера, Т-Банка и других бигтех-компаний;— воркшопы, которые успевают за изменениями: если сегодня завирусится новая нейросеть, то завтра вы сможете обсудить её с наставником.Начните учиться бесплатно и получите скидку 16% — она автоматически появится в личном кабинете.Учиться!Erid: 2SDnjcrkfqm Название: ООО "ЯНДЕКС"
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,07031Open in Telegram
  • C# Ready | Unity

    21 Sept, 06:30

    🐱 C# Job Questions — большая база для подготовки к собеседованиям!Здесь собраны вопросы с развернутыми ответами и примерами кода по C# и .NET, ООП, алгоритмам и структурам данных, архитектуре, базам данных и многопоточности. Дополнительная тренировка, чтобы системно повторить теорию, проверить пробелы и подготовиться к технической части собесов.Оставляю ссылочку: GitHub 📱➡️ C# Ready | #репозиторий
    1,140video743Open in Telegram
  • C# Ready | Unity

    18 Sept, 17:12

    Почему Count() в LINQ может сделать лишнюю работу?В C# часто нужно проверить, есть ли в последовательности хотя бы один элемент. Иногда для этого пишут так: if (items.Count() > 0) { Console.WriteLine("not empty"); }Для List<T> это может выглядеть безобидно, но LINQ работает не только со списками. Если items является IEnumerable<T>, Count() может пройти всю последовательность до конца.На ленивых источниках это особенно неприятно: var items = GetRows() .Where(row => row.IsActive);Проверка через Count() заставит перебрать все подходящие элементы, хотя для ответа достаточно первого.Когда нужен только факт наличия элемента, лучше использовать Any(): if (items.Any()) { Console.WriteLine("not empty");
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,450954Open in Telegram
  • C# Ready | Unity

    18 Sept, 07:12

    Разбираем File и Path 7 инструментов для работы с файлами!В C# для повседневной работы с файлами чаще всего хватает стандартных классов File, Directory и Path. Они закрывают проверку существования, чтение, запись, создание папок, обход директорий и безопасную сборку путей.В этой шпоре собраны File.Exists, ReadAllText, WriteAllText, Directory.CreateDirectory, Directory.EnumerateFiles, Path.Combine и Path.GetExtension.➡️ C# Ready | #совет
    Image from a post by C# Ready | UnityImage from a post by C# Ready | UnityImage from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,2907331Open in Telegram
  • C# Ready | Unity

    17 Sept, 07:12

    Шпаргалка по DateTime и форматам дат в C#!Например, yyyy отвечает за год, MM за месяц, dd за день, HH за часы в 24-часовом формате, а zzz показывает смещение часового пояса.На картинке собраны частые преобразования дат и времени. Есть Parse, ParseExact, ToString с форматами, Unix timestamp, DateTimeOffset и примеры конвертации между строками, DateTime и DateTimeOffset.Сохрани, чтобы не потерять!➡️ C# Ready | #совет
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,4105332Open in Telegram
  • C# Ready | Unity

    16 Sept, 08:12

    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,480755Open in Telegram
  • C# Ready | Unity

    15 Sept, 07:12

    ❤️ dotnet-learning — большая база ресурсов для изучения .NET!Здесь собраны полезные материалы для обучения, практики и более глубокого изучения подходов разработки на .NET. Репозиторий помогает не просто изучать отдельные технологии, а выстраивать целостное понимание платформы. Такой формат удобен и новичкам, и разработчикам с опытом, которые хотят структурировать знания или закрыть пробелы.Оставляю ссылочку: GitHub 📱➡️ C# Ready | #репозиторий
    1,850video964Open in Telegram
  • C# Ready | Unity

    14 Sept, 19:10

    Почему record в C# не делает объект полностью неизменяемым?record часто воспринимают как “immutable-класс”: public record User(string Name, List<string> Roles);Но неизменяемым становится не всё содержимое объекта.Свойство Roles нельзя просто заменить, если оно init-only: var user = new User("Ann", new List<string>());Но сам список внутри всё ещё изменяемый: user.Roles.Add("admin");То есть record защищает ссылку на список, но не защищает сам список от изменений.Это особенно важно, если объект передаётся между слоями приложения: public record Profile(string Name, List<string> Permissions);Код снаружи может сохранить ссылку и позже поменять содержимое: var roles = new List<string> { "user" };
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,600632Open in Telegram
  • C# Ready | Unity

    14 Sept, 16:10

    Почему нельзя удалять элементы из List прямо внутри foreach?foreach в C# удобен для чтения коллекции, но в нём лучше не менять коллекцию во время обхода.На первый взгляд такой код выглядит нормально: foreach (var user in users) { if (!user.Active) users.Remove(user); }Но во время выполнения List меняется, а перечислитель foreach ожидает, что структура коллекции останется прежней.В результате можно получить InvalidOperationException: Collection was modified; enumeration operation may not execute.Для простого удаления по условию чаще всего лучше использовать RemoveAll: users.RemoveAll(user => !user.Active);Мы не вручную управляем индексами, а говорим списку удалить все элементы, которые подходят под условие.
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,460954Open in Telegram
  • C# Ready | Unity

    14 Sept, 08:12

    Полезная статья про бенчмарки в одном C# файле!Автор показывает, как запускать BenchmarkDotNet без полноценного проекта. Идея особенно удобна для маленьких проектов, когда нужно быстро проверить информацию по производительности.В статье автор показывает: • как работают однофайловые приложения в .NET 10 • почему BenchmarkDotNet не стартует из коробки • как использовать in-process режим и какие у него ограниченияПродолжай читать на Habr➡️ C# Ready | #статья
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,560432Open in Telegram
  • C# Ready | Unity

    11 Sept, 06:12

    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    2,190964Open in Telegram
  • C# Ready | Unity

    10 Sept, 09:12

    Разбираем CancellationToken 7 приёмов для отмены операций!CancellationToken помогает останавливать долгие операции без грубого убийства потока и без ручных глобальных флагов.В этой шпоре: CancellationToken, CancellationTokenSource, CancelAfter, ThrowIfCancellationRequested, IsCancellationRequested, CreateLinkedTokenSource и Register.➡️ C# Ready | #шпора
    Image from a post by C# Ready | UnityImage from a post by C# Ready | UnityImage from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    2,32012431Open in Telegram
  • C# Ready | Unity

    9 Sept, 15:12

    Собираем простой таймер в C#!Иногда нужно запустить действие через задержку: показать уведомление, выполнить повторную проверку или отложить сохранение. Но важно уметь отменить задачу, если она уже не нужна.Создадим CancellationTokenSource: using var cts = new CancellationTokenSource();Теперь напишем отложенное действие: static async Task RunLater( TimeSpan delay, Func<Task> action, CancellationToken token) { await Task.Delay(delay, token); await action(); }Запуск выглядит так: var task = RunLater( TimeSpan.FromSeconds(3),
    1,950632Open in Telegram
  • C# Ready | Unity

    9 Sept, 13:12

    Коротко и по работному делу!— Море IT & Digital вакансий на удалёнку — Каждый день — Прямые контакты HRПодписаться на канал 🤘
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
  • C# Ready | Unity

    9 Sept, 07:12

    Полезная статья про тестирование ASP.NET Core API!Автор показывает, как уменьшить повторение в интеграционных тестах и собрать удобное окружение с БД, фейковым временем и настройкой под конкретный тест.В статье автор показывает: • как устроить тестовое окружение для ASP.NET Core API • почему setup-код быстро начинает повторяться • как фикстуры помогают переиспользовать инфраструктуруПродолжай читать на Habr➡️ C# Ready | #статья
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,580543Open in Telegram
  • C# Ready | Unity

    8 Sept, 15:12

    Ограничиваем параллельные запросы через SemaphoreSlim!Иногда нужно обработать много элементов асинхронно, но не запускать всё сразу. Например, нельзя одновременно ударить сотнями запросов по API или базе.Наивный вариант запускает все задачи сразу: var tasks = urls.Select(DownloadAsync); await Task.WhenAll(tasks);Если urls много, приложение может упереться в лимиты сети, rate limit или пул соединений.Для ограничения параллельности удобно использовать SemaphoreSlim: var gate = new SemaphoreSlim(4);Перед началом работы задача ждёт свободное место: await gate.WaitAsync();После завершения место обязательно освобождается через finally: try { await DownloadAsync(url);
    1,5706331Open in Telegram
  • C# Ready | Unity

    8 Sept, 13:12

    Сколько вакансий ты упускаешь, пока ищешь работу? 👀 Они разбросаны по десяткам Telegram-каналов, hh ru, карьерным сайтам и другим площадкам. Пока ты мониторишь одни источники, подходящая вакансия может появиться в другом. Софи забирает этот поиск на себя. Она ищет подходящие вакансии в 350+
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
  • C# Ready | Unity

    8 Sept, 07:12

    Шпаргалка по class, struct и record в C#!Например, class передаётся по ссылке, struct хранит значение, record class даёт value equality для модели данных, а record struct совмещает value type с удобствами record.На картинке сравниваются class, struct, record class и record struct. Есть тип хранения, значение по умолчанию, наследование, интерфейсы, immutability, equality, assignment и поведение ToString.Сохрани, чтобы не потерять!➡️ C# Ready | #ресурс
    Image from a post by C# Ready | UnityImage from a post by C# Ready | Unity
    1,660763Open in Telegram