Какие бывают модификаторы доступа в языке C#?

Недавно встретил неизвестный мне ранее модификатор доступа "protected internal" и решил поглубже разобраться в этой теме. Какие модификаторы доступа присутствуют в C# и в чём их разница?

Вообще суть модификаторов доступа - определение допустимой области видимости и взаимодействия для членов класса.

В C# существуют такие модификаторы доступа:

- public (доступен из любого другого места в коде, а так же из других сборок и тд)

- private (доступен только в классе, где был объявлён, противоположность public)

- protected (доступен из текущего класса или из производных классов)

- internal (доступен для любого места в коде, но только в текущей сборке (в отличие от public))

- protected internal (доступен из текущей сборки и из производных классов)

- private protected (доступен в текущем классе и в производных классах, но только текущей сборки)

По-умолчанию поля являются private, классы - internal.

Модификаторы доступа и многие другие темы рассмотрены на курсе C# Essential.

Ссылка на курс: С# Essential

Ссылка на урок: Урок 3