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

⚡ Умно обобщение

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

  • 🔐 Платен: Модификаторът за частен достъп ограничава член до същия клас, блокирайки достъпа от всяка външна програма.
  • 🌐 Публично: Модификаторът за публичен достъп предоставя свойство или метод на всяка външна програма без ограничения.
  • ️ Защитени: Модификаторът за защитен достъп споделя членове само с класове, наследени от текущия клас.
  • 📦 Вътрешен: Вътрешният модификатор за достъп позволява достъп в рамките на същия асембли, но не и от външна програма.
  • 🏗️ Строител: Конструкторът споделя името на класа, не приема тип връщане и инициализира полета, когато се създава обект.
  • 🤖 AI помощ: GitHub Copilot изгражда модификатори и конструктори, докато ML.NET съпоставя свойствата на класа с характеристиките на модела.

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

Какво е модификатор на достъп (спецификатор) в C#?

Модификатори на достъп Спецификаторите за достъп (Access Specifiers) в C# са ключовите думи, използвани за дефиниране на видимостта на свойство или метод на клас. Използват се, когато не искате други програми да виждат свойствата или методите на даден клас. Модификаторите за достъп ограничават достъпа, така че други програми да не могат да виждат свойствата или методите на даден клас.

В C# има 6 типа модификатори за достъп:

  • частен
  • Обществен
  • Защитена
  • вътрешен
  • Защитено вътрешно
  • Частно защитено

Ще научим за основните модификатори на достъп в C# с примери за програми, както е обяснено по-долу.

Модификатори за частен достъп в C#

Когато модификаторът за частен достъп е прикачен към свойство или метод, това означава, че тези членове не могат да бъдат достъпни от външна програма.

Пример за модификатор на частен достъп

Нека вземем пример и да видим какво се случва, когато използваме модификатора за частен достъп.

Нека модифицираме текущия код в нашия файл Tutorial.cs. В метода SetTutorial нека променим ключовата дума public на private.

Модификатори за частен достъп

Сега нека преминем към нашия файл Program.cs. Ще забележите, че под метода SetTutorial има червена криволичеща линия.

Тъй като вече сме декларирали метода SetTutorial като частен в нашия клас Tutorial, Visual Studio откри това. Той каза на потребителя, като го подчерта, че сега този метод няма да работи от файла Program.cs.

Модификатор за частен достъп

C# Модификатори за публичен достъп

Когато модификаторът за обществен достъп е прикачен към свойство или метод, това означава, че тези членове могат да бъдат достъпни от всяка външна програма. Вече видяхме това в нашите по-ранни примери.

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

C# Модификатори за публичен достъп

Тъй като сме дефинирали нашите методи като публични в класа Tutorial, те могат да бъдат достъпни от файла Program.cs.

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

Когато модификаторът за защитен достъп е прикачен към свойство или метод, това означава, че тези членове могат да бъдат достъпни само от наследени класове от тока клас. Това ще бъде обяснено по-подробно в класа Наследяване.

Модификатори за вътрешен достъп на C#

Когато вътрешен модификатор за достъп е прикачен към свойство или метод, тези членове могат да бъдат достъпни само от вътрешна програма, но не и от външна програма.

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

C# Конструкторите се използват за инициализиране на стойностите на полетата на класа, когато се създават съответните им обекти. Конструкторът е метод, който има същото име като това на класа. Ако в клас е дефиниран конструктор, той ще предостави първия метод, който се извиква, когато се създава обект. Да предположим, че имаме клас, наречен Employee. Методът на конструктора също ще бъде наречен Employee().

Следните ключови неща трябва да се отбележат относно методите на конструктора

  1. Модификаторът за достъп по подразбиране на C# за конструктора трябва да бъде направен публичен.
  2. Не трябва да има върнат тип за метода на конструктора.

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

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

Стъпка 1) Първата стъпка е да създадете конструктора за нашия клас Tutorial. В тази стъпка добавяме кода по-долу към файла Tutorial.cs.

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

Code Обяснение:

  1. Първо добавяме нов метод, който има същото име като това на класа. Тъй като това е същото име като класа, C# го третира като метод на конструктор. Така че сега, когато извикващият метод създаде обект от този клас, този метод ще бъде извикан по подразбиране.
  2. В конструктора на урока задаваме стойността на 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. Това става чрез ключовата дума „нова“.
  2. Използваме метода GetTutorial на класа Tutorial, за да получим TutorialName. След това това се показва на конзолата чрез метода Console.WriteLine.

Ако горният код е въведен правилно и програмата се изпълни, ще се покаже следният изход.

Изход:

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

От изхода можем да видим, че конструкторът наистина е бил извикан и че стойността на TutorialName е зададена на „Default“.

Забележка: Тук стойността „по подразбиране“ се извлича от конструктора.

Въпроси и Отговори

Ако не е зададен модификатор, членовете на класа и структурата по подразбиране са частни, а типовете от най-високо ниво - вътрешни, оставайки скрити, докато не разширите видимостта им.

Protected предоставя член на същия клас и всеки производен клас, дори в различни асембли. Internal го предоставя само на типове в същия асембли.

Защитеният вътрешен клас (Protected internal) позволява достъп от същия асембли или от всеки производен клас. Частният защитен клас (Private protected) е по-строг, позволявайки само производни класове вътре в същия асембли.

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

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

Да. Един клас може да дефинира няколко конструктора с различни списъци с параметри. Компилаторът избира този, който съответства на аргументите, предадени на new.

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

ML.NET съпоставя публичните свойства на C# клас данни с характеристики и етикети на модела. Публичните функции за получаване и задаване на стойности позволяват четенето на тези стойности по време на обучение.

Обобщете тази публикация с: