Type-safety of C#
Dynamically allocated objects and arrays are initialized to zero.
Everything must be initialized explicitly before use.
You can’t create invalid references.
Arrays hold references not values, and they’re garbage collected.