На странице собраны вопросы по .NET — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, .net, database.
Semaphore и SemaphoreSlim синхронизация потоков в .NET Semaphore — системный объект ядра ОС для межпроцессной синхронизации SemaphoreSlim — облегчённый механизм, работающий внутри одного процесса Semaphore потребляет…
Всегда ли value type размещается в стеке? Исключения Value type обычно размещается в стеке Исключения: Boxing: value type преобразуется в объект и размещается в куче Поля ссылочных типов (классов): поля value type…
Контекст: управление памятью в C# В C# типы разделяются на значимые (value types) и ссылочные (reference types). Значимые типы размещаются в стеке (stack) либо непосредственно входят в состав объектов. Ссылочные типы…
Для чего нужна куча в .NET и как с ней работает Garbage Collector? Куча предназначена для динамического выделения памяти В ней размещаются объекты ссылочных типов, срок жизни которых может превышать время работы…
Зачем нужен CancellationToken? механизм управления отменой асинхронных операций передаётся методам для реализации кооперативной отмены сообщает о необходимости остановить выполнение помогает избежать лишнего…
оптимизация загрузки ресурсов в веб-приложениях и программном обеспечении ресурсы загружаются отложенно, только при необходимости сокращается первоначальное время загрузки страницы или программы уменьшается расход…
Зачем нужен StringBuilder и каким образом он повышает эффективность работы со строками? класс, предназначенный для эффективного изменения строк в Java строки являются immutable (изменить их нельзя) при конкатенации с…
Финализатор vs IDisposable финализатор — механизм автоматического очищения ресурсов, то есть деструктор его асинхронно вызывает GC, причем точный момент заранее неизвестен IDisposable — интерфейс для явного…
Зачем нужны GetHashCode и Equals и какова их роль в Dictionary<TKey, TValue> Контекст: переопределение методов в .NET для хеширования объектов и определения их равенства GetHashCode формирует для объекта целочисленный…
Многопоточность и асинхронный код в проектах Многопоточность применял для увеличения степени параллелизма и ускорения выполнения задач. Для синхронизации доступа к разделяемым ресурсам и защиты от гонок данных…
Устройство List<T> и изменение вместимости массива List<T> в .NET представляет собой динамический массив — собственную оболочку над обычным массивом Элементы хранятся в массиве T[], который изначально имеет…
Как в C# устроено замыкание (closure) с внешней переменной замыкание — это сохранённый контекст окружения лямбды внешняя переменная (например, counter) захватывается по ссылке, а не копируется все обращения к этой…