Модификаторы внутреннего и частного доступа - PullRequest
371 голосов
/ 28 сентября 2010

В чем разница между internal и private модификаторами доступа в C #?

Ответы [ 6 ]

489 голосов
/ 28 сентября 2010

внутренняя предназначена для области сборки (т.е. доступна только из кода в том же .exe или .dll)

private предназначен для области видимости класса (т.е. доступен только из кода в том же классе).

196 голосов
/ 07 октября 2013

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

Приват: - Приватные участники доступны только в пределах своего типа (Свой класс).

Внутренний: - Внутренний элемент доступен только внутри сборки по наследованию (его производному типу) или по экземпляру класса.

enter image description here

Ссылка:

dotnetbull - что такое модификатор доступа в c #

67 голосов
/ 28 сентября 2010

internal элементы видны для всего кода в сборке, в которой они объявлены.
(И для других сборок, на которые ссылается атрибут [InternalsVisibleTo] )

private члены видны только декларирующему классу.(включая вложенные классы)

Внешний (не вложенный) класс не может быть объявлен private, так как нет содержащей области действия, чтобы сделать его закрытым.

Чтобы ответить на забытый вами вопросчтобы спросить, protected члены похожи на private члены, но также видны во всех классах, которые наследуют декларирующий тип.(Но только для выражения, по крайней мере, типа текущего класса)

6 голосов
/ 25 июля 2015

private - инкапсуляция в классе / scope / struct ect '.

внутренний - инкапсуляция в сборках.

6 голосов
/ 28 сентября 2010

Закрытые члены доступны только в теле класса или структуре, в которой они объявлены.

Внутренние типы или члены доступны только в файлахв той же сборке

3 голосов
/ 29 августа 2014

Internal позволит вам ссылаться, скажем, на статический класс доступа к данным (для обеспечения безопасности потоков) между несколькими классами бизнес-логики, не подписываясь на них, чтобы наследовать этот класс / отключение друг от друга в пулах соединений, и в конечном итоге избежать класс DAL для продвижения доступа на общественном уровне. Это имеет бесчисленное множество опор в дизайне и лучших методах.

Entity Framework хорошо использует этот тип доступа

...