С# является достаточно популярным языком разработки. В этом языке методы, классы, поля и иные элементы программного кода обладают модификаторами доступа.

Данная статья расскажет об упомянутой особенности языка. Предстоит разобраться не только с тем, что собой представляет модификатор доступа, но и разобраться с его видами. Информация будет особо полезна новичкам, которые недавно занимаются C#.

Определение

В Google полно информации о модификаторах доступа. Они у каждого языка разработки свои, но определение термина всего едино. Согласно Google так называют некий элемент, создающий допустимую область видимости для элементов класса.

Модификатор доступа – это:

  • определитель контекста, в котором разрешено использование переменной или метода;
  • ключевые слова, указывающие на доступность компонента программного кода, его типа данных и классов.

Это – ограничитель доступа, обеспечивающий инкапсуляцию объекта в ООП. Всего существуют 4 модификатора. Они определяют 6 разных уровней доступности. Этот момент крайне важен при формировании любого приложения: если элемент находится вне «зоны видимости», использовать его тот или иной фрагмент кода не сможет.

Присваивание и виды

Google указывает на то, что модификаторы инициализируются при помощи ключевого слова. Оно напрямую зависит от того, какой именно уровень доступа нужно установить для класса (или иного компонента программы).

Существуют следующие спецификации:

  • private;
  • protected;
  • public;
  • internal;
  • protected internal;
  • private protected.

А вот таблица, которая поможет лучше разобраться с доступностью:

C Sharp и модификаторы

Теперь каждый доступный вариант будет рассмотрен более подробно. Соответствующая информация пригодится не только тем, кто планирует работать с C#, но и в других ЯП.

Public

Первый тип – public. С ним обязательно столкнется каждый программист. Это уровень общедоступности. Public class – класс, согласно Google, доступный из любой части приложения. Публичный элемент, который виден даже другим сборкам и программам.

В Google полно примеров с таким вариантом. Public void – это переменная, которая доступна из любой области кода для считывания и дальнейшей работы.

C Sharp и модификаторы

Выше – пример части кода, в котором есть публичный конструктор — Person. Форма объявления:

Public classes name, где classes_name – это имя заданного общедоступного класса. Вместо него могут быть иные объекты кода.

Protected

Google указывает на то, что это – «защищенный» уровень доступности. Ограничивается классом, который содержит член, а также производные типы этого класса. Это значит, что класс, выступающий в качестве подкласса в том или ином месте приложения, сможет получить доступ к защищенным компонентам.

Простыми словами: элемент класса будет доступен по всему классу, а также в его производных. Последние получат возможность дальнейшего размещения в последующих сборках.

C Sharp и модификаторы

Выше – пример программы из Google, в которой:

  • класс Y – это наследник X;
  • защищенные члены X могут быть доступны из Y;
  • члены класса X не подлежат изменению.

При обработке запроса на экране появится следующий результат:

C Sharp и модификаторы

Синтаксис объявления: protected TypeName.

Internal

Это, согласно Google, модификатор внутреннего доступа. Применяется, если доступ к компоненту ограничивается только нынешней сборкой. Называется также модификатором доступа по умолчанию.

Тут действует простой принцип: при применении соответствующей спецификации компоненты кода будут доступны из любой части написанного приложения в этой самой сборке. Для других приложений и сборок Google характеризует подобные элементы как «недоступные».

C Sharp и модификаторы

Результат: C Sharp и модификаторы

Синтаксис спецификации: internal class name. В продемонстрированном из Google примере класс Complex выступает частью пространства имен internalAccessModifier. Он будет доступен в его пределах.

Protected internal

Характеризуется внутренним защищенным уровнем доступности. Google указывает на то, что такой вариант включает в себя функции protected и internal. В нем элементы класса доступны из любой области нынешней сборки. Также поддерживается доступность из производных классов. Они должны быть расположены в других сборках.

Синтаксис: protected internal class name

C Sharp и модификаторы
C Sharp и модификаторы

Здесь:

  1. Value объявлен в качестве внутреннего защищенного.
  2. Соответствующий компонент будет доступ внутри родительского класса. А еще – в другом классе той же сборки. Пример – ABC.
  3. Value доступен внутри другого класса, производного от родительского. Простыми словами – в дочернем, но находящегося в другой сборке.

Результатом окажется надпись «value = 9».

Private

Приватный модификатор доступа тоже является весьма распространенным в любом языке программирования. Google указывает на то, что он используется в программных кодах так же часто, как и public.

Google характеризует приватный спецификатор как «закрытый». Такой элемент виден только в пределах своего класса или ин6ой структуры. Любой другой класс, даже в текущей сборке, не сможет работать private class.

Синтаксис: private TypeName

C Sharp и модификаторы
C Sharp и модификаторы

Здесь:

  1. Происходит объявление значения члена родительского класса в качестве приватного. Доступ к нему будет ограниченным.
  2. При попытке получения доступа к значению внутри производного класса Child выскочит сообщение об ошибке.
  3. Для того, чтобы получать значения «закрытых» членов, Google указывает на то, что нужно использовать общедоступные методы-члены.

Результатом обработки кода будет запись «value = 4».

Private Protected

Google указывает на наличие еще одного спецификатора в C# — публичный защищенный. При его использовании элемент класса доступен из любого места, но только в пределах собственного класса или в производных. Последние должны находиться в той же сборке.

Синтаксис: private protected TypeName. Появился в C Sharp, начиная с версии 7.2.

C Sharp и модификаторы
C Sharp и модификаторы

Этот пример совпадает с предыдущим. Согласно Google, при наличии спецификатора private protected для значения члена происходит своеобразная инкапсуляция. Член будет доступен внутри производного или родительского класса. Любой дочерний class, способный присутствовать в другой сборке, не сможет работать с private protected.

Быстрое изучение

Для того, чтобы лучше усвоить тему, можно поискать необходимую информацию в Google или изучить видео-уроки. Некоторые предпочитают заниматься самообразованием и так обучаются программированию, но есть и более надежные методы.

Чтобы не приходилось собирать по частям из Google важную информацию по C#, можно отучиться в ВУЗе. Но в университетах данный язык изучается или поверхностно, или вовсе пропускается. Зато там особое внимание уделяется C++. Это долгий вариант, но в конце человек сможет стать настоящим программистом.

Если времени ждать нет (или не хочется), можно закончить специализированные дистанционные онлайн курсы. Пример – от OTUS. Там весь образовательный процесс построен через интернет, можно выбрать одно или несколько инновационных IT-направлений для одновременного изучения, есть интересные домашние задания. Гарантировано кураторство и богатая практика. Образовательная программа рассчитана на срок от нескольких месяцев до года – в зависимости от выбранного направления. Курсы делятся по уровню первоначальных знаний, а в конце выдается электронный сертификат установленного образца. Больше не придется думать, что такое privacy, protected и main(). Все объяснят языком понятным как новичку, так и опытному разработчику.

C Sharp и модификаторы