Do any of you know the meaning of this keyword?
Yes. This is not valid C #, but in IL it is the equivalent of finally , but only if an exception is thrown.
There is no direct correlation in C #, so the decompiler cannot decompile it into native C #. You could imitate him with something like:
bool success = false; try { ... stuff ... success = true; // This has to occur on all "normal" ways of exiting the // block, including return statements. } finally { if (!success) { Dispose(); } }
I mention this in my article about the details of the implementation of the iterator block , which looks relevant for your specific example :)
Jon skeet
source share