Уровни доступности (Справочник по C#)
Модификаторы доступа public
, protected
, internal
или private
используются для указания одного из следующих объявленных уровней доступности к членам.
Объявленная доступность | Значение |
---|---|
public |
Неограниченный доступ. |
protected |
Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса. |
internal |
Доступ ограничен текущей сборкой. |
protected internal |
Доступ ограничен текущей сборкой или типами, которые являются производными от содержащего класса. |
private |
Доступ ограничен содержащим типом. |
private protected |
Доступ ограничен содержащим классом или типами, которые являются производными от содержащего класса в текущей сборке. |
Вы можете указать для члена или типа только один модификатор доступа, за исключением случаев использования сочетаний protected internal
или private protected
.
Модификаторы доступа не могут быть указаны для пространств имен. Пространства имен не имеют ограничений доступа.
В зависимости от контекста, в котором производится объявление члена, допускаются только некоторые объявленные уровни доступности. Если модификатор доступа не указывается в объявлении члена, используется доступность по умолчанию.
Типы верхнего уровня, не вложенные в другие типы, могут иметь только уровень доступности internal
или public
. Для этих типов уровнем доступности по умолчанию является internal
.
Вложенные типы, которые являются членами других типов, могут иметь объявленные уровни доступности, как указано в следующей таблице.
Члены типа | Уровень доступности членов по умолчанию | Допустимые объявленные уровни доступности члена |
---|---|---|
enum |
public |
нет |
class |
private |
public protected internal private protected internal private protected |
interface |
public |
public protected internal private *protected internal private protected |
struct |
private |
public internal private |
* Член interface
со private
специальными возможностями должен иметь реализацию по умолчанию.
Примечание.
Если класс или структура изменяются с помощью record
модификатора ключевое слово, то разрешены те же модификаторы доступа.
Кроме того, с record
модификатором специальных возможностей элементов по умолчанию остается private
как для класса, так и структуры.
Доступность вложенного типа зависит от домена доступности, который определяется объявленным уровнем доступности члена и доменом доступности непосредственно вмещающего его типа. Однако домен доступности вложенного типа не может выходить за границы домена доступности содержащего его типа.
Спецификация языка C#
Дополнительные сведения см. в спецификации языка C#. Спецификация языка является предписывающим источником информации о синтаксисе и использовании языка C#.