Just another “have to know” thing.
During deserialization, an uninitialized object is first created, without calling any constructors on the type. Then all data members are deserialized
Please read MSDN article for more details.
I’m so wondering: why did they do things working this way?..
Anyway, if you also want to create object without calling it’s constructor, just use FormatterServices.GetUninitializedObject