C# Ready | Unity
10.1K subscribers
1.19K photos
62 videos
547 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
❤️ CodeChef: C# with Beginner DSA — это пошаговый учебный на CodeChef

На нём ты найдёшь roadmap из ~6 курсов: от основ C# и логики до Beginner DSA, а дальше — закрепление через сотни задач по DSA/алгоритмам (под интервью и контесты).

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥3
📱 FixedUpdate vs Update: стабильная физика и отзывчивый ввод!

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

В этом гайде:

Разбираем, почему смешивать физику и ввод в одном методе опасно;

Показываем рабочую схему с Update и FixedUpdate без конфликтов;

Объясняем, когда использовать Time.deltaTime и Time.fixedDeltaTime.


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

➡️ C# Ready | #unity
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
2🤝2410🔥9👍3
😎 Нашёл полезный материал про ранний этап развития Avalonia!

В этой статье:
• Показаны цели фреймворка и базовые архитектурные решения.
• Разобраны ключевые возможности первой беты для реальных приложений.
• Объясняется, почему экосистема Avalonia стала заметной в .NET-мире.


🔊 Продолжай читать на Habr!


➡️ C# Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
12🤝4👍3
HttpClientFactory в ASP,NET Core: убираем таймауты и «умирающие» сокеты!

Частая проблема в сервисах такая: запросов становится больше, а внешнее API начинает отвечать дольше. В какой-то момент появляются случайные таймауты, хотя код «вроде простой».

Обычно это выглядит так:
public async Task<string> LoadOrdersAsync(string url)
{
using var client = new HttpClient();
return await client.GetStringAsync(url);
}


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

В ASP.NET Core лучше один раз настроить клиент через IHttpClientFactory и брать его из DI.
using System.Net.Http;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddHttpClient("orders", client =>
{
client.BaseAddress = new Uri("https://api.example.com/");
client.Timeout = TimeSpan.FromSeconds(5);
});


Сервис регистрируем отдельно, чтобы использовать настроенный клиент внутри бизнес-логики.
builder.Services.AddScoped<OrderService>();

var app = builder.Build();
app.Run();


Теперь сам сервис. Через фабрику получаем именованный клиент и выполняем запрос.
public sealed class OrderService
{
private readonly IHttpClientFactory _factory;

public OrderService(IHttpClientFactory factory)
{
_factory = factory;
}

public async Task<string> LoadOrdersAsync()
{
var client = _factory.CreateClient("orders");
return await client.GetStringAsync("orders/today");
}
}


Так соединения используются повторно, а поведение под нагрузкой становится заметно ровнее.

🔥 В итоге ты убираешь класс случайных сетевых сбоев и получаешь более предсказуемый прод.

➡️ C# Ready| #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥6👍5
This media is not supported in your browser
VIEW IN TELEGRAM
FlowchartAI — это бесплатный AI-генератор блок-схем, который из текста или кода автоматически строит диаграмму. Он анализирует твой ввод (описание процесса/алгоритма или код) и превращает его в визуальную блок-схему, которую можно смотреть прямо в браузере без регистрации.

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

➡️ C# Ready| #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍9🤝7
Почему async void почти всегда проблема?

С async Task вызывающий код может сделать await и нормально поймать исключение. С async void такого пути нет.

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

async void допустим в основном для обработчиков событий, где сигнатуру задает сам фреймворк.
static async Task SaveAsync()
{
await Task.Delay(100);
}

await SaveAsync();


🔥 Итог: в обычном коде используй async Task или async Task<T>. async void оставляй только для событий.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍7🔥5👎1
📂 Коротко про HTTPS!

HTTPS — это HTTP с защитой. Он шифрует данные между браузером и сервером, поэтому их сложно перехватить и прочитать.

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

Сохрани, чтобы быстро вспоминать, что значит https://

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍5🔥3
👩‍💻 ConcurrentDictionary без гонок и боли!

В этой шпаргалке — как безопасно кэшировать значения, делать upsert и счётчики, читать без исключений, обновлять по CAS-логике, удалять с возвратом и быстро сбрасывать состояние, не ловя race conditions в многопоточке.

➡️ C# Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥145👍3
❤️ Нашёл крутую статью про оптимизацию рендера в MonoGame!

В этой статье:
• Как устроить слои и батчи, чтобы сократить число draw call.
• Как использовать инстансинг для повторяющихся элементов персонажа.
• Как измерять прирост производительности после изменений.


🔊 Продолжай читать на Habr!


➡️ C# Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥3
int.TryParse в C#: перестаём падать на пользовательском вводе!

Пользователь вводит число в поле, и всё работает до первого «abc» или пустой строки. После этого приложение ловит исключение и ты тратишь время на разбор банального кейса.

Часто пишут так:
Console.Write("Введите возраст: ");
string input = Console.ReadLine()!;
int age = int.Parse(input);

Console.WriteLine($"Возраст: {age}");


int.Parse хорош, когда формат уже гарантирован. Для пользовательского ввода безопаснее использовать int.TryParse.
Console.Write("Введите возраст: ");
string? input = Console.ReadLine();

if (int.TryParse(input, out int age))
{
Console.WriteLine($"Возраст: {age}");
}
else
{
Console.WriteLine("Некорректный ввод. Введите целое число.");
}


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

🔥 В итоге ты убираешь лишние исключения и получаешь предсказуемое поведение на реальных данных.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥8👍4
This media is not supported in your browser
VIEW IN TELEGRAM
👐 freeCodeCamp Foundational C#— бесплатная учебная программа, сделанные чтобы дать крепкую базу по C#!

Внутри — обучение через материалы Microsoft Learn + проверки знаний на стороне freeCodeCamp: ты пройдёшь основы языка (переменные, типы данных, управляющие конструкции) и базовые принципы ООП

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍106🔥6
8🔥6👍4
Что же выведет консоль?
Anonymous Quiz
27%
A
6%
B
57%
C
10%
D
🔥186👍3