I am curious to know why this is happening. Please read the code example below and the corresponding IL that was emitted in comments below each section:
usi
As a (perhaps-)interesting aside... GetType() is unusual in that it isn't virtual - this leads to some very, very odd things.
GetType()
virtual
(marked as wiki as it is somewhat off-topic to the actual question)