Меня смущает следующий код и область применения оператора и его удаление объекта.Объем элементов внутри оператора using
using(DbFactory db = new DbFactory())
{
Repository repo = new Repository<someobject>(db);
result = repo.Get(somecondition);
}
В этом коде, что происходит после того, с помощью выполнения блока будет ли DbFactory
получает утилизировать?
Какова будет область действия переменной repo
, используемой внутри оператора using?
DbFactory
Используется Repository
и имеет переменную-член, которая будет содержать DbFactory
. Так будет ли это распоряжение DbFactory
?
edit1:
Repository repo;
ResultObject result;
using(DbFactory db = new DbFactory())
{
repo = new Repository<someobject>(db);
result = repo.Get(somecondition);
}
public class Repository
{
private _dbFactory;
public Repository(DbFactory dbFactory)
{
_dbFactory = dbFactory;
}
}
Теперь будет ли DbFactory получает расположенный после заявления с использованием?
Отредактированный вопрос. Я смущен тем, что переменная repo хранит утилизацию DbContext после оператора using или DbContext, размещенного сразу после использования оператора, и репо будет ждать gc? – Sreejith
Dispose не имеет ничего общего с GarbageCollector, поскольку метод Dispose не является деструктором, и поэтому GC не будет вызываться, только когда метод Dispose. – Vir
@jonskeet Отличный момент, я ищу, что время удаления. – Sreejith