Ответы:
внутренняя предназначена для области сборки (т.е. доступна только из кода в том же .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.