在某些情况下 using 不会处理它应该处理的对象吗?
例如,
using(dbContext db = new dbContext()){ ... }
在最后一个 }
db 之后还有什么办法吗?
如果出现这种情况怎么办:
object o = new object();
using(dbContext db = new dbContext()){
o = db.objects.find(1);
}
有没有可能 o
可以让 db
存活?
最佳答案
我认为您混淆了两个概念:处理和垃圾收集。
处置对象会释放该对象使用的资源,但并不意味着该对象已被垃圾回收。垃圾收集只会发生在不再引用您的对象的情况下。
因此在您的示例中,db.Dispose
将在 using
block 的末尾调用(这将关闭连接),但是 DbContext
仍将被 o
引用。由于 o
是局部变量,因此当方法返回时,DbContext
将有资格进行垃圾回收。
关于c# - 是否存在使用不会处理对象的情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9404032/