I am very confused about the meaning of "default constructor" in C#. Many people, including my programming professor, just call any parameterless constructor "default constructor" (like in the questions and answers here or here). Even the SO tag wiki on default-constructor says that it is "a parameterless constructor... often (note that it says often, not always) generated by the compiler".
If this logic is to be followed, whether a constructor is "default" or not relies on how you can call it. I.e. if you can call it the "default" way, without any parameters, it is a default constructor.
However, MSDN, if I am reading it correctly, seems to give the name "default constructor" only to the parameterless constructor that is implicitly generated when no other constructor is specified, calls a parameterless base class constructor, and (like any other constructor) initializes the class
's fields to their values.
To think about it, this makes more sense than "default" == "parameterless"
: an implicitly generated constructor is sort of like the default option when you haven't chosen anything else.
So, is it correct to call all parameterless constructors default constructors?
Or is it correct to call explicitly defined constructors of the form public C(): base() {}
(for regular classes) and protected C(): base() {}
(for abstract classes) default constructors, as they fit the description of a default constructor on MSDN?
Or is the term really applicable only to implicitly generated constructors?
Also (probably the most important question): which is the most widely accepted definition of the term, be it correct or incorrect?