Модификаторы доступа (спецификаторы) в C# с примерами программ

⚡ Умное резюме

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

  • 🔐 Частное: Модификатор приватного доступа ограничивает доступ участника только к одному классу, блокируя доступ из любых внешних программ.
  • 🌐 Общественность: Модификатор доступа "public" предоставляет доступ к свойству или методу любой внешней программе без ограничений.
  • 🛡️ Защищено: Модификатор доступа protected разделяет элементы только с классами, унаследованными от текущего класса.
  • 📦 Внутренние задачи: Модификатор доступа internal разрешает доступ внутри той же сборки, но не из внешней программы.
  • ???? ️ Конструктор: Конструктор имеет то же имя, что и класс, не принимает возвращаемый тип и инициализирует поля при создании объекта.
  • 🤖 Помощь ИИ: GitHub Copilot генерирует модификаторы и конструкторы, а ML.NET сопоставляет свойства классов с характеристиками моделей.

Модификаторы доступа (спецификаторы) в C#

Что такое модификатор доступа (спецификатор) в C#?

Модификаторы доступа В C# модификаторы доступа (или спецификаторы доступа) — это ключевые слова, используемые для определения видимости свойства или метода класса. Они используются, когда вы не хотите, чтобы другие программы видели свойства или методы класса. Модификаторы доступа ограничивают доступ, так что другие программы не могут видеть свойства или методы класса.

В C# существует 6 типов модификаторов доступа:

  • Частные
  • Общая
  • Защищенный
  • внутренний
  • Защищенный внутренний
  • Частный Защищенный

Мы узнаем об основных модификаторах доступа в C# на примерах программ, как описано ниже.

Модификаторы частного доступа в C#

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

Пример модификатора частного доступа

Давайте возьмем пример и посмотрим, что произойдет, если мы воспользуемся модификатором частного доступа.

Давайте изменим текущий код в нашем файле Tutorial.cs. В методе SetTutorial давайте изменим ключевое слово public на частное.

Модификаторы частного доступа

Теперь перейдем к нашему файлу Program.cs. Вы заметите, что под методом SetTutorial есть красная волнистая линия.

Поскольку теперь мы объявили метод SetTutorial частным в нашем классе Tutorial, Visual Studio это обнаружила. Он сообщил пользователю, выделив его, что теперь этот метод не будет работать из файла Program.cs.

Модификатор частного доступа

Модификаторы общего доступа C#

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

Пример модификатора публичного доступа

Модификаторы общего доступа C#

Поскольку в классе Tutorial мы определили наши методы как общедоступные, доступ к ним можно получить из файла Program.cs.

Модификаторы защищенного доступа в C#

Когда модификатор доступа Protected прикреплен к свойству или методу, это означает, что доступ к этим членам может получить только классы унаследованы от текущего класс. Более подробно это будет объяснено в классе «Наследование».

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

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

Конструктор C #

C# Конструкторы используются для инициализации значений полей класса при создании соответствующих объектов. Конструктор — это метод, имеющий то же имя, что и у класса. Если в классе определен конструктор, он предоставит первый метод, который вызывается при создании объекта. Предположим, у нас есть класс под названием «Сотрудник». Метод конструктора также будет называться «Сотрудник()».

О методах конструктора следует отметить следующие ключевые моменты.

  1. Модификатор доступа C# по умолчанию для конструктора должен быть общедоступным.
  2. Для метода конструктора не должно быть возвращаемого типа.

Пример конструктора C#

Давайте теперь посмотрим, как мы можем включить пользователя конструкторов в наш код. Мы будем использовать конструкторы для инициализации полей TutorialID и TutorialName некоторыми значениями по умолчанию при создании объекта.

Шаг 1) Первым шагом является создание конструктора для нашего класса Tutorial. На этом этапе мы добавляем приведенный ниже код в файл Tutorial.cs.

Конструктор C #

Code Объяснение:-

  1. Сначала мы добавляем новый метод с тем же именем, что и у класса. Поскольку это то же имя, что и класс, C# рассматривает его как метод конструктора. Итак, теперь всякий раз, когда вызывающий метод создает объект этого класса, этот метод будет вызываться по умолчанию.
  2. В конструкторе Tutorial мы устанавливаем значение TutorialID равным 0, а TutorialName — значение «По умолчанию». Поэтому всякий раз, когда создается объект, эти поля всегда будут иметь значения по умолчанию.

Теперь перейдем к нашему файлу Program.cs и просто удалим строку, вызывающую метод SetTutorial. Это потому, что мы хотим просто посмотреть, как работает конструктор.

Конструктор C #

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Tutorial
 {
  public int TutorialID; 
  public string TutorialName;
  
  public Tutorial()
  {
   TutorialID=0;
   TutorialName="Default";
  }
  public void SetTutorial(int pID,string pName) 
  {
   TutorialID=pID;
   TutorialName=pName;
  }
  public String GetTutorial()
  {
   return TutorialName;
  }
  
  static void Main(string[] args) 
  {
   Tutorial pTutor=new Tutorial();
    
   Console.WriteLine(pTutor.GetTutorial());
    
   Console.ReadKey(); 
  }
 }
}

Code Объяснение:-

  1. Первым шагом является создание объекта для класса Tutorial. Это делается с помощью ключевого слова «new».
  2. Мы используем метод GetTutorial класса Tutorial, чтобы получить TutorialName. Затем это отображается на консоли с помощью метода Console.WriteLine.

Если приведенный выше код введен правильно и программа выполнена, будет отображен следующий вывод.

Выход:

Конструктор C #

Из вывода мы видим, что конструктор действительно был вызван и что значение TutorialName было установлено на «По умолчанию».

Примечание: Здесь значение «по умолчанию» извлекается из конструктора.

Часто задаваемые вопросы (FAQ)

Если модификатор не указан, члены класса и структуры по умолчанию имеют значение private, а типы верхнего уровня — internal, оставаясь скрытыми до тех пор, пока вы не расширите их видимость.

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

Защищенный внутренний класс разрешает доступ из той же сборки или любого производного класса. Защищенный частный класс более строгий и разрешает доступ только производным классам внутри той же сборки.

В C# поддерживаются конструкторы по умолчанию, параметризованные, копируемые, статические и приватные конструкторы. Они инициализируют поля объекта, выполняют настройку класса один раз или клонируют значения другого объекта.

Статический конструктор не принимает модификаторов или параметров. Он выполняется один раз, перед созданием первого объекта или загрузкой статических членов, инициализируя статические поля.

Да. Класс может определять несколько конструкторов с разными списками параметров. Компилятор выбирает тот, который соответствует аргументам, переданным в метод `new`.

Да. GitHub Copilot предлагает модификаторы, конструкторы и инициализаторы полей из имени класса или комментария внутри Visual Studio. VS Code. RevПросмотрите каждый из предложенных уровней видимости.

ML.NET сопоставляет общедоступные свойства класса данных C# с признаками и метками модели. Общедоступные геттеры и сеттеры позволяют считывать эти значения во время обучения.

Подведем итог этой публикации следующим образом: