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

Автор: @energy_it

РКН: https://clck.ru/3SBaT3

Реклама на бирже: https://telega.in/c/csharp_ready
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
✍️ Gizmo AI — нейросеть для обучения и запоминания информации!

AI-сервис, который помогает превращать заметки, PDF, статьи, видео и другие материалы в карточки для обучения и квизы. Нейросеть автоматически выделяет главное, генерирует вопросы и помогает быстрее запоминать информацию с помощью повторения и интерактивного формата обучения.

📌 Оставляю ссылочку: gizmo.ai

➡️ C# Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
👍124🔥3
👩‍💻 Разберем switch-выражения — компактнее и выразительнее!

С выходом C# 8 появился новый способ писать условия декларативно и лаконично.

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

Возвращает результат без лишних строк в вашем коде.

Упрощает обработку разных вариантов данных в одном месте.

Обеспечивает явную проверку и надёжность кода при изменениях.


Так вы получите более читаемые условия и не пропустите ни одного случая.

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍6🤝63
📂 Напоминалка для работы со списками!

Например, Add() добавляет элемент в конец списка, а Contains() позволяет проверить наличие значения.

На картинке — основные методы List<T>, которые чаще всего используются в повседневной разработке.

Сохрани, чтобы не потерять!

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🤝155👍3
Срезы коллекций — когда нужна часть, а лишнее не нужно!

Иногда требуется взять только кусок массива или строки: первые элементы, последние — или вырезать середину. Раньше ради этого писали Substring, Skip / Take и плодили лишние аллокации.

В C# 8 появились операторы диапазонов .. и индексов с конца ^, которые делают такие операции короче и нагляднее.

Создадим массив данных:
int[] data = { 10, 20, 30, 40, 50, 60 };


Берём элементы со 2-го по 3-й (правый край не включён):
int[] middle = data[1..3];      // {20, 30}


Последние два элемента:
int[] lastTwo = data[^2..];     // {50, 60}


Всё, кроме первых двух и последних двух:
int[] withoutEdges = data[2..^2]; // {30, 40}


То же со строкой — вытаскиваем слово «Index»:
string text = "Range & Index";
string word = text[^5..]; // "Index"


🔥 Range и Index делают код короче, читаемее и позволяют работать с Span<T> без копирования: меньше аллокаций — выше производительность!

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥84👍3
This media is not supported in your browser
VIEW IN TELEGRAM
🐱 Mapify — нейросеть, которая превращает любой текст в наглядную mind-map!

Если нужно быстро понять сложную тему, эта нейросеть автоматически превращает длинный текст, видео или статью в структурированную mind-map. Полезно для подготовки к экзаменам, изучения новой темы или планирования проектов.

📌 Оставляю ссылочку: mapify.so

➡️ C# Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥114👍2
👩‍💻 Разбираемся с dynamic — максимум гибкости без жёсткой типизации!

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

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

Позволяет работать с JSON без создания классов.

Подходит для COM-объектов и слабо типизированных API.

Ошибки появляются только во время выполнения.


Поэтому dynamic полезен, когда нужно быстро взаимодействовать с внешними данными или писать универсальный код.

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥134👍4
Почему IEnumerable лучше не перечислять несколько раз?

IEnumerable<T> выглядит как обычная коллекция, но это может быть не список.

Это может быть LINQ-запрос, чтение из файла, генератор или результат из базы.

Например:
if (orders.Count() > 0)
{
foreach (var order in orders)
Process(order);
}


На первый взгляд код нормальный.

Но Count() может пройти всю последовательность.
А потом foreach пройдёт её ещё раз.

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

Если нужен повторный доступ, лучше явно сохранить данные:
var orderList = orders.ToList();


А если нужен только проход — не делай лишнюю проверку перед foreach.

🔥 IEnumerable<T> — это не всегда коллекция в памяти. Иногда это инструкция, как получить данные.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍3🔥2
Напоминалка по async/await в C#!

Например, await не создаёт новый поток, а приостанавливает выполнение метода и освобождает текущий поток, пока операция не завершится.

На картинке краткая шпаргалка по async и await: зачем нужна асинхронность, какие бывают return-типы (Task, Task<T>), как работает state machine, чем отличается последовательный await от Task.WhenAll() и какие ошибки часто приводят к блокировкам.

Сохрани, чтобы не потерять!

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
15👍5🤝5
👩‍💻 Разбираемся с lock — простой защита от гонок потоков и порчи общих данных!

Когда несколько потоков одновременно меняют одну переменную без синхронизации, результат становится непредсказуемым

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

Оборачивай работу с разделяемым состоянием в lock (locker) { ... }

Держи блокировку минимально короткой: никаких долгих операций, I/O или Thread.Sleep() внутри lock.

Лишняя синхронизация превращается в узкое место производительности.


Поэтому, lock помогает писать стабильный и предсказуемый многопоточный код.

C# Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍115🤝5🔥3