我很困惑下面的代码和使用语句及其对象处置的范围。使用语句内部成员的范围
using(DbFactory db = new DbFactory())
{
Repository repo = new Repository<someobject>(db);
result = repo.Get(somecondition);
}
在这段代码的使用块执行后会发生什么将DbFactory
得到处理?
在using语句中使用的变量的范围是repo
?
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变量在using语句或DbContext在使用语句之后处理并且回购将等待gc之后是否持有对DbContext的处置? – Sreejith
Dispose与GarbageCollector无关,因为Dispose方法不是析构函数,所以不会在Dispose方法时调用GC。 – Vir
@jonskeet伟大的一点,我正在寻找处置的时机。 – Sreejith