如果使用界面,则需要处理

Foo*_*bis 1 c# dispose memory-leaks

假设我有一个MyObject有两个接口的对象:IMyContract和IDisposable.我在一个方法中有这个代码:

IMyContract blah = new MyObject();
blah.Blah();
return;
Run Code Online (Sandbox Code Playgroud)

这是潜在的内存泄漏,对吗?不需要:

using (MyObject blah = new MyObject())
{
    blah.Blah();
}
return;
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 6

好吧,如果它实现了IDisposable你应该确实处理它.如果不这样做,或者持续多长时间,会有什么会泄漏 - 但是你应该有一个using声明来避免它.

(只是为了澄清:内存是最不容易被泄露的东西,IDisposable通常是关于非托管资源,例如网络连接等.当然,对象可以处理远离GC注视的一些内存.任何IDisposable持有直接引用非托管资源的实现都应该有一个终结器,所以泄漏应该只是暂时的......但这仍然是痛苦的.)