A better method of finding solutions to problems like this is to use a tool to decompile the IL which is assembled .NET. The tool I recomend is LINQPad; which features a lambda button which will decompile the sample code fragment being analyzed.
To further your understanding of such optimizations, I would recomend reading the book by Randall Hyde author of 'The Art of Assembly' and 'Write Great Code Series'.
Volume Two of Write Great Code illistrates how to write high level code while considering the lower lever constructs and limitations of compilers:
Writing Great Code Vol 2: Thinking Low-Level, Writing High-Level