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

Автор: @energy_it

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

Реклама на бирже: https://telega.in/c/csharp_ready
Download Telegram
👩‍💻 Разберем guid — структура .NET для представления глобальных уникальных идентификаторов!

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

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12🤝72
📂 Шпаргалка по LINQ для .NET разработчика!

Например, Where() фильтрует коллекции, Select() преобразует данные, а GroupBy() помогает быстро группировать элементы по ключу.

На картинке — основные LINQ-методы, разбитые по категориям: фильтрация, сортировка, агрегация, группировка, работа с последовательностями и другое.

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
24🔥14👍4😁4
Локальная валидация и фильтрация в Minimal API с AddEndpointFilter!

В Minimal API удобно обрабатывать запросы в одной строчке. Но что, если нужно добавить проверку или логирование без лишней обвязки?

С .NET 8 можно использовать AddEndpointFilter — он добавляет поведение *только* к нужному эндпоинту.

Создаём минималку с фильтром на размер файла:
app.MapPost("/upload", UploadFile)
.AddEndpointFilter(async (context, next) =>
{
var file = context.GetArgument<IFormFile>(0);
if (file.Length > 5_000_000)
return Results.BadRequest("Файл слишком большой!");

return await next(context); // пропускаем дальше
});


Теперь сам обработчик остаётся максимально чистым:
static IResult UploadFile(IFormFile file)
{
// сохраняем, обрабатываем и т.д.
return Results.Ok("Файл принят!");
}


🔥 Гибкая локальная логика: логирование, авторизация, валидация — без middleware и лишнего кода!

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍4🔥3
📂 Как выбрать cloud database и не утонуть в вариантах?

В облаках есть разные классы баз: relational, key-value, document, wide-column, graph, time-series, search и analytical databases. У каждой модели свои сильные стороны: транзакции, скорость чтения, горизонтальное масштабирование, гибкая схема или аналитические запросы.

На картинке - сравнение облачных database-сервисов и близких open-source альтернатив.

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65🔥4
👩‍💻 C# 13 без лишнего — быстро, чисто, понятно!

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

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥43
🤓 Шпаргалка по Git — всё самое важное в одном месте!

На картинке — компактная визуальная памятка по основным командам Git и их логике работы: создание и клонирование репозитория, отслеживание изменений, работа с ветками, обновление данных, просмотр истории, откаты и разрешение конфликтов.

Сохрани, чтобы быстрее ориентироваться в Git и не путаться в командах при работе с проектами.

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103👍2
📂 Шпаргалка по Server-Sent Events в ASP.NET Core и .NET 10!

Например, SSE позволяет серверу мгновенно отправлять обновления клиенту через обычный HTTP, а встроенный SSE API в .NET 10 упрощает реализацию realtime-уведомлений.

На картинке — краткая схема работы SSE: от простого endpoint до переподключения клиентов, replay событий и фильтрации пользователей.

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥2
record — удобно создаём типы для хранения данных!

Иногда нужно создать класс, который просто хранит данные: имя, возраст, email или другие значения.

Обычно для этого пишут обычный класс:
class User
{
public string Name { get; set; }
public int Age { get; set; }

public User(string name, int age)
{
Name = name;
Age = age;
}
}


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

В C# можно использовать record, чтобы описывать такие типы короче:
csharp id="svqk8g"
using System;

record User(string Name, int Age);


Теперь создадим объект и выведем его в консоль:
csharp id="m79oqr"
User user = new User("Анна", 25);

Console.WriteLine(user);


Вот что получится при запуске:
csharp id="ww9ua2"
User { Name = Анна, Age = 25 }


record особенно удобен для моделей, где важны сами данные, а не сложное поведение объекта.

🔥 record помогает писать короче и удобнее, когда тип нужен в первую очередь для хранения данных

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍32
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