When you new an object in C# a few things must happen:
Serialization frameworks seem to have some magical way to do 1 without doing 2 and 3. Or maybe it's not so magical after all. How would you do the same (skip 2 and 3) if you are writing your own deserialization code?
Binary formatter uses methods of FormatterServices, like GetUninitializedObject.