Уровни доступности (Справочник по 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#.

См. также