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
👩‍💻 Разбираемся с 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
This media is not supported in your browser
VIEW IN TELEGRAM
🤔 .NET Mastery Hub — большая база знаний по .NET для разработчиков!

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

Оставляю ссылочку: GitHub 📱


➡️ C# Ready | #репозиторий
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥6👍3
👍8🔥32
Сидеть и работать в корпорации — страшно, жизнь-то мимо проходит. Уходить строить бизнес — страшно, а вдруг прогорит. Один из вариантов — разрабатывать свой пет-проект по вечерам. Многие успешные компании, например, Twitter, создавались именно так. Это не значит, что ваш проект обязательно заработает миллиарды, но заработать больше, чем в найме, и получить ценный опыт — вполне реально.

Перед началом разработки появляется множество вопросов, например:

• Как выбрать идею для пет-проекта?
• Что нужно знать про маркетинг
• Как запуститься и довести до первых продаж не имея бюджета на рекламу?

В телеграм-канале «Твой пет проект», Михаил Табунов делится своим опытом с разработчиками и менеджерами.

Он рассказывает, где искать идею для нового проекта, что нужно знать о маркетинге, как запустить стартап и привлечь первых 10 клиентов, а также о многих других важных вещах.

Подписывайтесь на «Твой пет проект», получайте пользу от практиков рынка!
https://t.me/+8Frwa03ciVlhNTky
Фильтруем пользователей по домену email через LINQ!

Допустим, у нас есть список пользователей, и нужно достать только email-адреса на gmail.com.
Создадим простую модель:
public record User(string Name, string Email);


Подготовим данные:
var users = new List<User>
{
new("Alex", "alex@gmail.com"),
new("Maria", "maria@company.com"),
new("Bob", "bob@gmail.com")
};


Можно пройтись циклом и вручную собрать результат:
var result = new List<string>();

foreach (var user in users)
{
if (user.Email.EndsWith("@gmail.com"))
{
result.Add(user.Email);
}
}


Но через LINQ это читается короче:
var result = users
.Select(user => user.Email)
.Where(email => email.EndsWith("@gmail.com"))
.ToList();


Select достаёт из пользователя только email.
Where оставляет адреса с нужным доменом.
В результате получим:
alex@gmail.com
bob@gmail.com


Такой подход удобно использовать для фильтрации клиентов, подписчиков, заявок, логов, доменов, тегов и любых списков объектов.
Если регистр может отличаться, лучше явно указать сравнение:
email.EndsWith(
"@gmail.com",
StringComparison.OrdinalIgnoreCase
)


Select() + Where() это удобная связка LINQ, когда нужно достать поле и отфильтровать его по условию.

➡️ C# Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍4🔥3
Напоминалка по исключениям в C#!

Например, NullReferenceException часто появляется при обращении к объекту, который равен null, а ArgumentNullException обычно используют, когда в метод передали обязательный аргумент без значения.

На картинке иерархия исключений в C#: Exception, SystemException, ApplicationException, ArgumentException, IOException и другие популярные типы ошибок.

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

➡️ C# Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64🔥3
This media is not supported in your browser
VIEW IN TELEGRAM
Изоляция рунета произошла быстрее, чем ты думал

Loading

██████████████] 99%


Роскомнадзору воспользовался карт-бланшем на блокировку, а «белые списки» сайтов внедрены уже во всех регионах. И гайки будут закручиваться только сильнее.

Чтобы в одночасье не лишиться доступа к свободному Интернету, просто сохрани Only Hack.

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

Не жди момента «Х». Перестрахуйся подпиской.
2😁2
Почему для времени события часто лучше DateTimeOffset, а не DateTime?

В C# часто пишут так:
var createdAt = DateTime.Now;


Но DateTime.Now зависит от локального времени сервера.

Если приложение работает в разных часовых поясах, в Docker, в облаке или просто переезжает на другой сервер, это может привести к путанице.

Для моментов времени чаще удобнее использовать:
var createdAt = DateTimeOffset.UtcNow;


DateTimeOffset хранит не только дату и время, но и смещение относительно UTC.

Это делает значение понятнее при логах, событиях, API, заказах, платежах и аудите.

А для отображения пользователю время уже можно переводить в его часовой пояс отдельно.

Для хранения момента события DateTimeOffset.UtcNow часто безопаснее, чем DateTime.Now.

➡️ C# Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥4