考虑以下
using (Entity e = new Entity())
{
goto: Mars
}
我有泄漏吗?不是说我会做这样的愚蠢而只是想知道。
答案 0 :(得分:2)
是的Dispose
会被调用。 using
转换为try/finally
阻止类似:
try
{
goto Mars;
Console.WriteLine("in try");
}
finally
{
Console.WriteLine("in finally");
}
Mars:
Console.WriteLine("in Mars");
上面的输出是:
in finally
in Mars
您也可以通过创建自己的实现IDisposable
的类来测试它,如:
class MyDisposable : IDisposable
{
public void Dispose()
{
Console.WriteLine("Dispose called");
}
}
然后:
using (MyDisposable myDisposable = new MyDisposable())
{
goto Mars;
}
Mars:
Console.WriteLine("in Mars");
输出结果为:
Dispose called
in Mars