#643 – The Constructor for a struct Must Initialize All Data Members
August 7, 2012 Leave a comment
.NET requires that you initialize all memory for an object before you use it. When it comes to a struct, this means that you must do one of three things when declaring a new instance of a struct:
- Invoke the default parameterless constructor, which initializes all elements within the struct. (E.g. zeroes out simple value types)
- Declare the new instance and then set data members explicitly (assuming that they are all public)
- Invoke a custom constructor, which initializes all data members
This means that if you define a non-default constructor for a struct, your constructor must initialize all data members in the struct before it returns. to the caller. This guarantees that any creation of a struct-based value type will result in an object which is safe to use, because all of its data members have known values.