Поделиться через


Уровни специальных возможностей (справочник по C#)

Используйте модификаторы доступа , internalprotectedили private укажите один из следующих объявленных publicуровней специальных возможностей для членов.

Объявленная доступность Значение
public Доступ не ограничен.
protected Доступ ограничен содержащим классом или типами, производными от содержащего класса.
internal Доступ ограничен текущей сборкой.
protected internal Доступ ограничен текущей сборкой или типами, производными от содержащего класса.
private Доступ ограничен типом, содержащим.
private protected Доступ ограничен содержащим классом или типами, производными от содержащего класса в текущей сборке.

Типы верхнего уровня (не вложенные) могут использовать модификатор файлов . Модификатор file ограничивает доступ к коду в том же исходном файле. Модификатор нельзя объединить file с модификатором доступа.

Используйте только один модификатор доступа для элемента или типа, за исключением случаев использования 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#.

См. также