Встречается на 12% собеседований по C#

В чем разница между Scoped и Transient

Scoped и Transient — это два разных жизненных цикла сервисов в .NET DI-контейнере.

Transient создает новый экземпляр сервиса при каждом запросе. Подходит для легковесных, не требующих состояния сервисов.
Scoped создает один экземпляр на область (например, HTTP-запрос в веб-приложении). Подходит для сервисов, которым нужно сохранять состояние в рамках одной операции.

Пример регистрации:

csharp
services.AddTransient<ITransientService, TransientService>(); // Новый экземпляр при каждом вызове
services.AddScoped<IScopedService, ScopedService>(); // Один экземпляр на запрос

Пример использования:

csharp
public class MyController : Controller
{
    public MyController(ITransientService transient, IScopedService scoped)
    {
        // transient — новый экземпляр для каждого вызова
        // scoped — один экземпляр на весь запрос
    }
}

Важно: Scoped сервисы не должны использоваться в Singleton, так как это может привести к утечкам памяти.

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы