Thanks to Danny Thorpe and John Skeet, I learned something about C# initialization order.
I knew there were differences between declarations having their initial value set at the point of declaration, and inside a constructor, but not about all of them.
So I observed the initialization order while stepping through code, but the virtual method behaviour was new to me.
Thanks Blaz Art for asking this at SO.