Reference type and constructors
Basically I use option 1. The usage of constructor is initialize the properties and creating an object in memory.  Value types sets the default values ​​(int = 0 etc), reference types sets  null. If you want use own default values, you must use own constructor. This is option 1 in your post. In my opinion this is the safest and most logical option.