当从“using”块中调用“return”时会发生什么? [复制]

2024-04-12

如果我有一个带有这样的 using 块的方法......

    public IEnumerable<Person> GetPersons()
    {
        using (var context = new linqAssignmentsDataContext())
        {
            return context.Persons.Where(p => p.LastName.Contans("dahl"));
        }
    }

...从 using 块中返回值,IDisposable 对象是否仍然被释放?


是的,它确实。对象的处置发生在finally 块中,即使面对返回调用,该块也会执行。它本质上扩展到以下代码

var context = new linqAssignmentsDataContext();
try {
  return context.Persons.Where(p => p.LastName.Contans("dahl"));
} finally {
  if ( context != null ) {
    context.Dispose();
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当从“using”块中调用“return”时会发生什么? [复制] 的相关文章

随机推荐