Ответы:
внутренняя предназначена для области сборки (т.е. доступна только из кода в том же .exe или .dll)
private предназначен для области видимости класса (т.е. доступен только из кода в том же классе).
Найти объяснение ниже. Вы можете проверить эту ссылку для более подробной информации - http://www.dotnetbull.com/2013/10/public-protected-private-internal-access-modifier-in-c.html
Частный: - Частные члены доступны только в пределах своего типа (Свой класс).
Внутренний: - Внутренний элемент доступен только внутри сборки по наследству (его производному типу) или по экземпляру класса.

Ссылка :
Protected Internalобеспечивает более широкий доступ, чем Protected.
protected internalкак protected OR internal.
With Typeзначит?
ANDэта матрица для true | false | false | false для protected internal. не интуитивно вместо этого это true | true | true | false как будто OR'd.
private protectedне очень интуитивны. Для подробностей: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internalэлементы видны всему коду в сборке, в которой они объявлены.
(и другим сборкам, на которые ссылается [InternalsVisibleTo]атрибут )
privateчлены видны только декларирующему классу. (включая вложенные классы)
Внешний (не вложенный) класс не может быть объявлен private, так как нет содержащей области действия, чтобы сделать его закрытым.
Чтобы ответить на вопрос, который вы забыли задать, protectedчлены похожи на privateчлены, но также видны во всех классах, которые наследуют декларирующий тип. (Но только по выражению хотя бы типа текущего класса)
private - инкапсуляция в классе / области действия / структуре и т. д.
внутренняя - инкапсуляция в сборках.
Закрытые члены доступны только внутри тела класса или структуры, в которой они объявлены.
Внутренние типы или элементы доступны только внутри файлов в одной сборке
Internal позволит вам ссылаться, скажем, на статический класс доступа к данным (для обеспечения безопасности потоков) между несколькими классами бизнес-логики, не подписываясь на них, чтобы наследовать этот класс / отключение друг от друга в пулах соединений, и, в конечном счете, избегать использования класса DAL. содействовать доступу на общественном уровне. Это имеет бесчисленное количество сторонников в дизайне и лучших практиках.
Entity Framework хорошо использует этот тип доступа
внутренние элементы доступны в сборке (доступны только в том же проекте)
частные члены доступны в одном классе
В решении есть 2 проекта (Project1, Project2), а Project1 имеет ссылку на Project2.