我很困惑下面的代碼和使用語句及其對象處置的範圍。使用語句內部成員的範圍
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