Speak.Me Учить иностранные слова

C#: модификаторы доступа (Access Modifiers)

С помощью модификаторов доступа можно ограничить доступ к типу или отдельному его члену из других типов и сборок. Модификатор добавляется к объявлению типа или его члена.

Всего доступно пять модификаторов доступа:

  • public — полный доступ. Это значение по умолчанию для членов enum и интерфейсов.
  • internal — доступ только в пределах сборки или дружеских сборок. Это значение по умолчанию для не вложенных типов.
  • private — доступ только в пределах типа. Это значение по умолчанию для членов класса или структуры.
  • protected — доступ только в пределах типа и производных классов.
  • protected internal — симбиоз protected и internal. Расширяет оба модификатора и делает тип или его член доступным в пределах типа, производных классов, сборки и дружеских сборок.
При переопределении методов базового класса, метод в производном классе должен иметь идентичный доступ с переопределенным методом. Например, производный класс может иметь меньший доступ, чем базовый, но не на оборот.

Дружественные сборки (Friend Assemblies)

Дружественная сборка — сборка, которая может обращаться к internal типам и членам другой сборки. Если сборка определена как дружественная, больше нет необходимости помечать типы и члены как public для того, чтобы другие сборки имели к ним доступ. Только сборки, которые явным образом указаны как дружественные, могут обращаться к internal типам и членам. Указать дружеские сборки можно с помощью атрибута System.Runtime.CompilerServices.InternalsVisibleTo:

Ограничение доступа (Accessibility Capping)

Типы ограничивают доступ своих членов. Например:

Класс С по умолчанию имеет доступ internal и он ограничивает доступ своего метода Foo, делая его тоже internal несмотря на то, что для Foo явно задан доступ public.