AFAIK, приватный по умолчанию везде в C #
Не совсем - по умолчанию «наиболее ограниченный доступ для этой декларации». Так, например, для типа верхнего уровня по умолчанию используется значение internal
; для вложенного типа по умолчанию используется private
.
Итак, в чем причина написания этого ключевого слова или почему оно вообще существует?
Это делает это явным, что хорошо по двум причинам:
- Это проясняет для тех, кто не знает значений по умолчанию, согласно вашему вопросу (лично мне никогда не нравился этот аргумент, но я подумал, что стоит упомянуть)
- Создается впечатление, что вы сознательно решили сделать его приватным, а не просто использовать настройки по умолчанию.
Что касается вашей последней части:
Более того, есть ли случай, когда написание "private" (одного) изменит доступ участника?
Да, для того, чтобы сделать половину собственности более строгой, чем другую:
// Public getter, public setter
public int Foo { get; set; }
// Public getter, private setter
public int Bar { get; private set; }
Я использовал везде, где мог, с настройками по умолчанию, но я был убежден (частично Эриком Липпертом), что дал понять, что вы об этом подумали, и решил сделать что-то личное - хорошая идея.
Лично я хотел бы, чтобы был способ сделать это для запечатанных / незапечатанных тоже, для объявлений типов - возможно, даже не имеет по умолчанию. Я подозреваю, что многие разработчики (включая меня, если я не осторожен) оставляют классы незапечатанными только потому, что это меньше усилий, чем их запечатывание.