这里只是一个快速的健全检查!
如果我在实例类中有静态方法,例如:
public class myClass
{
public static void AMethod()
{
//do somit
}
}
如果我在方法体中引用IDisposable资源(例如对象上下文)会不会引起问题?
public static void AMethod()
{
ObjectContext context = new ObjectContext();
// do somit
}
它会导致问题,我的意思是,它是否会在方法体结束后保留幕后的对象上下文,因为它是一个静态方法?
可以看出,类不是静态的,变量是方法的本地变量。
我知道我应该在这里使用'使用',只是好奇这个特定的事件组合是否会/会导致内存泄漏。
答案 0 :(得分:3)
为避免出现任何问题,建议您在完成使用后立即处理IDisposable资源。这可以通过将它们包装在using
语句中来实现:
public static void AMethod()
{
using (ObjectContext context = new ObjectContext())
{
// do something
}
}
答案 1 :(得分:1)
离开方法AMethod
的范围后,您的context
对象不能再使用,因此最终会被垃圾收集。
但是当它实现IDisposable
时,你应该使用using
语句:
using (ObjectContext context = new ...)
{
// Use the context here
}