GOTO里面使用块,对象会被处理掉吗?

Sea*_*ghn 3 .net c# .net-4.0

我不太确定goto在一个using区块内使用.

例如:

using(stream s = new stream("blah blah blah"));
{
    //do some stuff here

    if(someCondition) goto myLabel;
}
Run Code Online (Sandbox Code Playgroud)

现在,如果someCondition是,则代码执行将继续进行myLabel,但是,对象是否会被处置?

我在这个主题上看到了一些非常好的问题,但他们都在谈论不同的事情.

slo*_*oth 7

是.


但为什么不亲自尝试一下呢?

void Main()
{
    using(new Test())
    {
        goto myLabel;
    }
myLabel:
    "End".Dump();
}
class Test:IDisposable
{
    public void Dispose()
    {
        "Disposed".Dump();
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

处置
结束