Actually, the derived class constructor is executed first, but the C# compiler inserts a call to the base class constructor as first statement of the derived constructor.
So: the derived is executed first, but it "looks like" the base was executed first.