我在这个网站或 CodeProject 的某个地方读到,如果某个类已经实现了 IDisposable 接口(interface),那么好的规则是你应该使用 using 关键字,因为使用翻译成 MSIL 的关键字是 try/finally 阻止这样的事情:
try
{
//some logic
}
finally
{
if (obj != null)
{
obj.Dispose();
}
}
但是在观看 Entity Framework 的教程时,我遇到了这样的事情:
using(SampleBEntities db = new SampleBEntities()){//some logic here}
SampleBEntities 继承自 ObjectContext 而在 MSDN lib 中 ObjectContext 没有实现 IDisposable?
最佳答案
是的,它确实实现了 IDisposable
接口(interface)。
public class ObjectContext : IDisposable
检查 MSDN
它有方法Dispose()
,这些方法来自实现IDisposable
接口(interface)。
如果它没有像您所说的那样实现,请单独运行,它甚至不会编译。
使用语句
Using 定义了一个范围,在这个范围之外一个或多个对象将被释放。
C# 通过 .NET Framework 公共(public)语言运行时 (CLR) 自动释放用于存储不再需要的对象的内存。内存的释放是不确定的;只要 CLR 决定执行垃圾回收,就会释放内存。
using 语句允许我们指定使用资源的对象何时应该释放它们。 提供给 using 语句的对象必须实现 IDisposable 接口(interface)。该接口(interface)提供了 Dispose 方法,该方法应该释放对象的资源。
using 语句可以在到达 using 语句的末尾时退出,或者如果抛出异常并且控制在语句结束之前离开语句 block 。
关于c# - 我应该为 ObjectContext 使用 using 关键字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11317009/