I was wondering, what is the preferred way to construct a new object in C#?
Take a Person class:
public class Person
{
private string name;
The real issue comes when you pass the object through tiers/layers. For example you create a person object and pass through a webservice. The webservice at somepoint tries to deserialize and tries to instantiate and then you might get an error if there is a paramter required for constructors! as webservices first creates an object and then assigns values.
So I would prefer a parameterless contructor if it is a datamodel (POCO sort of) that needs to pass through tiers.
For other reasons contructor parameter is the best way(for mandatory fields). Especially when providing the class as an iterface to external objects or assemblies.