I'm quite unsure about using goto inside an using block.
For example:
using(stream s = new stream("blah blah blah"));
{
//do some stuff here
if(someCondition) goto myLabel;
}
Now if someCondition is true the code execution will move on to myLabel, but, will the the object get disposed?
I've seen some pretty good questions here on this topic but they all talk about different things.
Yes.
But why not try it yourself?
void Main()
{
using(new Test())
{
goto myLabel;
}
myLabel:
"End".Dump();
}
class Test:IDisposable
{
public void Dispose()
{
"Disposed".Dump();
}
}
Result:
Disposed
End
The using statement is essentially a try-finally block and a dispose pattern wrapped up in one simple statement.
using (Font font1 = new Font("Arial", 10.0f))
{
//your code
}
Is equivalent to
Font font1 = new Font("Arial", 10.0f);
try
{
//your code
}
finally
{
//Font gets disposed here
}
Thus, any jump from the "try-block", be it throwing an exception, the use of goto (unclean!) &tc. will execute the Disposal of the object being used in that "finally" block..
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With