c# – 是否存在使用不会丢弃物体的情况?
作者:互联网
是否有任何情况下使用不会处理它应该处理的对象?
例如,
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块的末尾调用(将关闭连接),但DbContext仍将由o引用.由于o是局部变量,因此当方法返回时,DbContext将有资格进行垃圾回收.
标签:c,using-statement 来源: https://codeday.me/bug/20190711/1436114.html