AFAIK, prywatne jest domyślne wszędzie w C #
Niezupełnie - domyślnie jest to „najbardziej ograniczony dostęp dostępny dla tej deklaracji”. Na przykład dla typu najwyższego poziomu domyślną wartością jest internal
; dla typu zagnieżdżonego wartością domyślną jest private
.
Więc jaki jest powód napisania tego słowa kluczowego lub dlaczego w ogóle istnieje?
Wyraża to wyraźnie, co jest dobre z dwóch powodów:
- To sprawia, że jest to jaśniejsze dla tych, którzy nie znają wartości domyślnych, jak na twoje pytanie (osobiście nigdy nie podobał mi się ten argument, ale pomyślałem, że warto o nim wspomnieć)
- Sprawia wrażenie, że celowo zdecydowałeś się uczynić go prywatnym, zamiast po prostu przejść z domyślnymi.
Jeśli chodzi o ostatnią część:
Co więcej, czy istnieje przypadek, w którym zapis „prywatny” (sam) zmieni dostępność członka?
Tak, za uczynienie połowy nieruchomości bardziej restrykcyjną niż druga:
// Public getter, public setter
public int Foo { get; set; }
// Public getter, private setter
public int Bar { get; private set; }
I wykorzystywane do przejść z domyślnych wszędzie mogłem, ale byłem przekonany (częściowo przez Eric Lippert), który czyni go wyczyścić, że już o tym myślał i postanowił zrobić coś prywatny jest dobrym pomysłem.
Osobiście żałuję, że nie ma sposobu na zrobienie tego również dla zapieczętowanych / nieopieczętowanych również dla deklaracji typu - prawdopodobnie nawet nie mają wartości domyślnej. Podejrzewam, że wielu programistów (łącznie ze mną, jeśli nie jestem ostrożny) pozostawia otwarte klasy tylko dlatego, że jest to mniej wysiłku niż ich zapieczętowanie.
internal
jednak domyślnie.