I\'m quite unsure about using goto inside an using block.
For example:
using(stream s = new stream(\"blah blah blah\"));
{
using(Stream s = new Stream("blah blah blah"))
{
if(someCondition) goto myLabel;
}
equals to
Stream s;
try
{
s = new Stream("blah blah blah");
if(someCondition) goto myLabel;
}
finally
{
if (s != null)
((IDisposable)s).Dispose();
}
So, as soon as you leave the using block, the finally block does happen, no matter what made it quit.