Модификатори на достъп (спецификатори) в 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# конструктор

Обяснение на кода:-

  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(); 
  }
 }
}

Обяснение на кода:-

  1. Първата стъпка е да създадете обект за класа Tutorial. Това става чрез ключовата дума „нова“.
  2. Използваме метода GetTutorial на класа Tutorial, за да получим TutorialName. След това това се показва на конзолата чрез метода Console.WriteLine.

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

Изход:

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

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

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

Oбобщение

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