Библиотека задач по C# | тесты, код, задания
5.25K subscribers
426 photos
3 videos
406 links
Задачи и тесты по C# для тренировки и обучения.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/05448a24

Для обратной связи: @proglibrary_feeedback_bot

Наши каналы: https://t.me/proglibrary/9197
Download Telegram
Почему lock(this) — антипаттерн?

👾 — Блокирует сборщик мусора
👍 — Публичный монитор: внешний код может тоже его захватить → риск дедлоков; используйте приватный объект (private readonly object _gate = new();)
🥰 — Потому что this не является ссылочным типом
⚡️ — Потому что lock — это всегда spinlock без ожидания

Библиотека задач по C#
👍14
Halloween Special — последний день магии! 👻

Успевай сегодня купить курсы со скидкой 40%!

А также участвуй в розыгрыше MacBook Pro 14 💻

После полуночи останется только тыква 🎃

🔮 Открой портал и выбери курс
Что важно для ключей Dictionary<TKey, TValue> при TKey-структуре?

👾 — Переопределять только ToString()
👍 — Иммутабельность и корректные Equals/GetHashCode без зависимости от изменяемых полей
🥰 — Разрешить менять поля после вставки — хеш пересчитается автоматически
⚡️ — Достаточно реализовать IComparable<T>

Библиотека задач по C#
👍14👾1
Что выведет код?

👾 — 0
👍 — No value
🥰 — null
⚡️ — Error

Библиотека задач по C#
Please open Telegram to view this post
VIEW IN TELEGRAM
👍39🥱1
Операторы присваивания не могут быть перегружены.

👍 — Правда
👾 — Ложь

Библиотека задач по C#
👾41
Каковы отличия между Finalize и Dispose?

Dispose предоставляет явный контроль над ресурсами, которые использует объект, в то время как Finalize работает неявно и управляется сборщиком мусора.

Библиотека задач по C#
👍2
Зачем помечать override как sealed?

👾 — Чтобы запретить вызов из другого домена
👍 — Чтобы запретить дальнейшее переопределение и дать JIT шанс де-виртуализировать/инлайнить метод
🥰 — Чтобы сделать метод static
⚡️ — Это обязательно для всех virtual в Release

Библиотека задач по C#
👍21
Почему Task.Result/.Wait() могут «вешать» UI/ASP.NET classic?

👾 — Потому что Task требует STA-поток
👍 — Из-за захвата SynchronizationContext: продолжение ждёт UI-поток, который блокирует синхронное ожидание
🥰 — Потому что GC останавливает мир на ожидании
⚡️ — Потому что Result всегда делает бесконечный spinwait

Библиотека задач по C#
👍12