Модификаторы доступа C#

Модификаторы доступа (или уровни доступности) служат для ограничения доступности типов C# и членов класса. В C# доступны следующие модификаторы доступа:

Модификатор доступаОписание модификатора доступа
publicМаксимально открытый тип.
privateМаксимально закрытый тип. Доступ возможен только внутри типа.
protectedДоступ внутри типа или внутри наследников типа.
internalДоступ только внутри сборки, которая содержит тип.
protected internalДоступ внутри сборки и во всех типах, которые наследуют текущий тип.
private protectedДоступ внутри класса или в типах, которые наследуют текущий тип и находятся внутри текущей сборки.

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

public class Point 
{
    private int x_;
    private int y_;

    public void Paint() 
    {
    }
}

В этом примере объявляется открытый (public) класс Point с двумя закрытыми полями x_ и y_ (private) и одним открытым методом Paint(). Досту к закрытым полям класса можно получить только внутри этого класса, а метод Paint() доступен везде где используются объекты класса Point.

Модификаторы доступа членов типов.

По умолчанию (если явно не указан модификатор доступа) в C# членам классов и структур назначается модификатор доступа private, а членам интерфейсов и перечислений public. Для интерфейсов и перечислений вообще нельзя изменить модификатор доступа для членов этих типов. А для членов структур недоступны некоторые модификаторы доступа, которые доступны для членов классов. Это связано с тем, что структуры в отличие от классов не могут иметь наследников.

ТипМодификатор доступа члена по умолчаниюДоступные изменения модификатора
classprivateЛюбые модификаторы доступа
structprivateМодификаторы доступа не связанные с наследованием: public, private, internal
enumpublicИзменения уровня доступа членов недоступны.
interfacepublicИзменения уровня доступа членов недоступны.

Уровни доступности типов

Классы, структуры, перечисления, интерфейсы и другие типы, если явно не указан уровень доступа, по умолчанию определятся как internal. Т.е. эти типы являются открытыми внутри сборки.

Модификаторы доступа пространств имен

К пространствам имен модификаторы доступа не применяются. Пространства имен всегда открыты.

avatar
5000
  Подписаться  
Уведомление о