Многопоточность и асинхронный код в проектах Многопоточность применял для увеличения степени параллелизма и ускорения выполнения задач. Для синхронизации доступа к разделяемым ресурсам и защиты от гонок данных…
Как устроен Dictionary<TKey, TValue>: бакеты и коллизии Dictionary представляет собой хеш-таблицу, использующую массив бакетов Для ключа вычисляется индекс бакета: hash(key) % capacity В одном бакете оказываются…
Выбор стратегии: фабрика, DI или другой паттерн архитектурный подход к созданию объектов фабрика: отвечает за создание объектов и скрывает детали их конструирования Dependency Injection (DI): получает зависимости…
Как IQueryable<T> преобразует лямбда-выражения в SQL IQueryable<T> предназначен для формирования запросов к удалённому источнику данных, например к базе данных. В этом случае лямбда-выражения представлены как…
Требования к чистым функциям и нарушающие их побочные эффекты Чистая функция возвращает один и тот же результат при одинаковых входных данных Она не зависит от внешнего состояния и не изменяет его, то есть не…
Почему доступ к элементу List<T> по индексу выполняется за O(1) В .NET коллекция List<T> построена на основе динамического массива Её элементы размещаются в непрерывном блоке памяти Обращение по индексу использует…
Категории типов данных в .NET и различия value/reference type В .NET типы данных относятся к двум основным категориям: value type и reference type Value type непосредственно содержат значение и хранят данные в стеке…
Приходилось ли писать T-SQL-запросы вручную? имею опыт работы с SQL Server и ручного написания T-SQL-запросов разрабатывал запросы для выборки, вставки и обновления данных применял сложные JOIN, подзапросы и CTE…
ORM в .NET: Entity Framework и Dapper Entity Framework: полнофункциональный ORM с поддержкой LINQ, миграций и ленивой загрузки Dapper: лёгкий и быстрый микрофреймворк для работы с прямым SQL и минимальным уровнем…
Чем различаются сигнатуры методов расширения LINQ для IEnumerable<T> и IQueryable<T> Для IEnumerable<T> методы получают Func<T, bool> (делегаты) и обрабатывают коллекцию в памяти: выполнение отложенное, но происходит…
В C# string — ссылочный и неизменяемый тип Переменная хранит ссылку на объект в управляемой куче string представляет класс System.String и обладает свойством immutable Интернирование (string pool) объединяет…