Відповіді:
внутрішній призначений для сфери складання (тобто доступний лише з коду в тому ж .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
це матриця до справжнього | false | false | false protected internal
. не інтуїтивно зрозумілий. натомість це правда | правда | правда | хибність, як ніби OR'd
.
private protected
не дуже інтуїтивно зрозумілі. Докладніше: docs.microsoft.com/en-us/dotnet/csharp/language-reference/…
internal
члени видно всім кодом у складі, в якому вони оголошені.
(І для інших збірок, на які посилається [InternalsVisibleTo]
атрибут )
private
члени видно лише класу, що декларує. (включаючи вкладені класи)
Зовнішній (не вкладений) клас не може бути оголошений private
, оскільки не існує сфери, що дозволяє зробити його приватним.
Щоб відповісти на запитання, яке ви забули задати, protected
члени схожі на private
членів, але їх також видно в усіх класах, які успадковують тип оголошення. (Але лише на виразі принаймні типу поточного класу)
private - інкапсуляція у класі / обсязі / структурі.
внутрішній - інкапсуляція в збори.
Приватні члени можуть бути доступні лише в тій частині класу або структурі, в якій вони оголошені.
Внутрішні типи або члени доступні лише у файлах однієї збірки
Внутрішній дозволить вам посилатися, скажімо, на статичний клас доступу до даних (для безпеки потоку) між декількома класами бізнес-логіки, при цьому не підписуючи їх на спадкування цього класу / подорожі один над одним у пулах підключення, і в кінцевому рахунку уникати дозволу класу DAL сприяти доступу на громадському рівні. Це має незліченну кількість дизайну та кращих практик.
Entity Framework добре використовує цей тип доступу
внутрішні члени доступні в межах зборів (доступні лише в тому ж проекті)
приватні члени доступні в межах одного класу
У рішенні є 2 проекти (Project1, Project2), а Project1 має посилання на Project2.