In addition to the response referenced by @ JeffersonQuesado, which already clarifies the subject, I would add an answer on a unique issue that you proposed.
In a free interpretation of the question:
Why does the term private
exist if you do not declare the access modifier also causes the element to be private?
.Net Facilitators and Conventions
There is no access modifier exclusivity. For this same reason, you do not declare a constructor in your class and the compiler "infers" that there is an empty constructor available. Or a method has optional parameters and you do not declare in the call of this method.
This all makes the code leaner, without affecting its usefulness. Making another person (or yourself) have less data presented to interpret the code, for example.
It's not always like this
Not all elements are private by default, some are public or internal ( the microsoft documentation makes this clear ).
And it was not always the case in the early versions of c # protected
was the default access modifier for some important elements. And nothing guarantees that this will not change in the next versions. Imagine the mess that caused the protected
to skip when migrating the system to a new version when inherited classes failed to "see" elements of their ancestor ...
Explicide
It makes it explicitly clear what your intention is regarding the accessibility of that element. Thinking of a stable and evolutionary code, if these conventions change you will have one less job.
Hope this helps.