На странице собраны вопросы по .NET — от проверки базовых принципов до практического применения и архитектурных решений. В подборке чаще встречаются темы: backend, database, memory management.
IEnumerable и IQueryable: отложенное выполнение IEnumerable предназначен для последовательного перебора коллекций, находящихся в памяти IQueryable используется для формирования и выполнения запросов к удалённым…
Отличия IEnumerable<T> от IQueryable<T> и назначение QueryProvider IEnumerable<T> — интерфейс для работы с коллекциями, выполняющий LINQ-запросы в памяти (LINQ to Objects) IQueryable<T> — расширяет IEnumerable<T> и…
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 формирует для объекта целочисленный…
Многопоточность и асинхронный код в проектах Многопоточность применял для увеличения степени параллелизма и ускорения выполнения задач. Для синхронизации доступа к разделяемым ресурсам и защиты от гонок данных…