internal
элементы видны для всего кода в сборке, в которой они объявлены.
(И для других сборок, на которые ссылается атрибут [InternalsVisibleTo]
)
private
члены видны только декларирующему классу.(включая вложенные классы)
Внешний (не вложенный) класс не может быть объявлен private
, так как нет содержащей области действия, чтобы сделать его закрытым.
Чтобы ответить на забытый вами вопросчтобы спросить, protected
члены похожи на private
члены, но также видны во всех классах, которые наследуют декларирующий тип.(Но только для выражения, по крайней мере, типа текущего класса)