我最近正在阅读一个论坛,看到这个评论:
所以,你看到你已经被骗了,相信'使用'语法将帮助你清理你的资源.哦,欢迎来到.NET开发.
这真让我吓坏了!在几乎所有情况下(特别是流),我几乎只使用.Dispose().没有人告诉我,"使用"是否有一些奇怪的事情?使用是好是坏还是无动于衷?
Szy*_*zga 15
来自MSDN:
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
Run Code Online (Sandbox Code Playgroud)
由编译器翻译成以下内容:
{
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
((IDisposable)font1).Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
所以不确定你在担心什么.
编辑:但是请注意,如果您在自己的类型上使用使用模式,则模式将仅与Dispose()方法一样有效.一些评论和其他答案.
在某些情况下,使用不会像您预期的那样进行清理,例如:
using (var myObject = new DisposableObject().AnotherDisposable())
{
//Do things to myObject
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,你有两个对象,DisposableObject和AnotherDisposable,using只会清理AnotherDisposable并让DisposableObject泄漏.