C # имеет в общей сложности 6 модификаторы доступа:
private : элемент, объявленный с этой доступностью, может быть видимым внутри содержащего типа, он не виден никаким производным типам, другим типам в той же сборке или типам вне содержащей сборку. то есть доступ ограничен только содержащим типом.
protected : элемент, объявленный с этой доступностью, может быть видимым в типах, производных от содержащего типа в содержащей сборке, и в типах, полученных из содержащего типа, за пределами содержащей сборки. то есть доступ ограничен производными типами содержащего типа.
внутренний : элемент, объявленный с этой доступностью, может быть видимым в сборке, содержащей этот элемент, он не виден ни одной сборке за пределами содержащей сборку. то есть доступ ограничен только сборкой.
внутренняя защита : элемент, объявленный с этой доступностью, может быть видимым в типах, производных от содержащего типа, внутри или снаружи вмещающей сборки, он также виден любым типам в содержащей сборке. доступ ограничен сборкой или производными типами.
public : элемент, объявленный с этой доступностью, может быть виден внутри сборки, содержащей этот элемент, или любой другой сборки, которая ссылается на содержащую сборку. то есть доступ не ограничен.
C # 7.2 добавляет новый уровень доступности:
частная защита : элемент, объявленный с этой доступностью, может быть виден в типах, производных от этого содержащего типа, в содержащей сборке. Он не виден никаким типам, не производным от содержащего типа или за пределами содержащей сборки. то есть доступ ограничен производными типами внутри содержащей сборки.
Источник, содержащий пример кода нового модификатора частного защищенного доступа