Få åtkomst till Modifiers (Specifiers) i C# med programexempel

Vad är Access Modifier (Specifier) ​​i C#?

Åtkomstmodifierare eller Access Specifiers i C# är nyckelorden som används för att definiera synligheten för en klassegenskap eller metod. Det används när du inte vill att andra program ska se egenskaperna eller metoderna för en klass. Åtkomstmodifierare begränsar åtkomsten så att andra program inte kan se egenskaperna eller metoderna för en klass.

Det finns 6 typer av åtkomstmodifierare i C#:

  • Privat
  • offentliga
  • Skyddad
  • Inre
  • Skyddad inre
  • Privat skyddad

Vi kommer att lära oss om de viktigaste åtkomstmodifierarna i C# med programexempel som förklaras nedan.

Privata åtkomstmodifierare i C#

När modifierare för privat åtkomst är kopplad till antingen en egenskap eller en metod, betyder det att dessa medlemmar inte kan nås från något externt program.

Exempel på modifierare för privat åtkomst

Låt oss ta ett exempel och se vad som händer när vi använder modifieraren för privat åtkomst.

Låt oss ändra den aktuella koden i vår Tutorial.cs-fil. I SetTutorial-metoden, låt oss ändra det offentliga nyckelordet till privat.

Modifierare för privat åtkomst

Låt oss nu gå över till vår Program.cs-fil. Du kommer att märka att det finns en röd snirklig linje under SetTutorial-metoden.

Eftersom vi nu har deklarerat SetTutorial-metoden som privat i vår Tutorial-klass har Visual Studio upptäckt detta. Den har berättat för användaren genom att markera den att nu kommer den här metoden inte att fungera från filen Program.cs.

Modifierare för privat åtkomst

C# Public Access Modifiers

När public access modifier är kopplad till antingen en egenskap eller en metod betyder det att dessa medlemmar kan nås från vilket externt program som helst. Vi har redan sett detta i våra tidigare exempel.

Exempel på Public Access Modifier

C# Public Access Modifiers

Eftersom vi har definierat våra metoder som offentliga i klassen Tutorial kan de nås från filen Program.cs.

Protected Access Modifiers i C#

När skyddad åtkomstmodifierare är kopplad till antingen en egenskap eller en metod betyder det att dessa medlemmar endast kan nås av klasser ärvt från strömmen klass. Detta kommer att förklaras mer i detalj i klassen Arv.

C# Internal Access Modifiers

När en intern åtkomstmodifierare är kopplad till antingen en egenskap eller en metod, kan dessa medlemmar endast nås av ett internt program men inte av ett externt program.

C#-konstruktör

C# Konstruktörer är vana vid att initiera värdena för klassfält när deras motsvarande objekt skapas. En konstruktor är en metod som har samma namn som klassens. Om en konstruktor är definierad i en klass, kommer den att tillhandahålla den första metoden som anropas när ett objekt skapas. Antag om vi hade en klass som heter Employee. Konstruktormetoden skulle också benämnas Employee().

Följande viktiga saker måste noteras om konstruktormetoder

  1. C#s standardåtkomstmodifierare för konstruktorn måste göras offentlig.
  2. Det ska inte finnas någon returtyp för konstruktormetoden.

Exempel på C# Constructor

Låt oss nu se hur vi kan införliva användaren av konstruktörer i vår kod. Vi kommer att använda konstruktorer för att initiera fälten TutorialID och TutorialName till vissa standardvärden när objektet skapas.

Steg 1) Det första steget är att skapa konstruktorn för vår handledningsklass. I det här steget lägger vi till koden nedan i filen Tutorial.cs.

C#-konstruktör

Kodförklaring:-

  1. Vi lägger först till en ny metod som har samma namn som klassens. Eftersom det är samma namn som klassen, behandlar C# detta som en konstruktormetod. Så nu när den anropande metoden skapar ett objekt av denna klass, kommer denna metod att anropas som standard.
  2. I Tutorial-konstruktorn ställer vi in ​​värdet på TutorialID till 0 och TutorialName till "Standard". Så närhelst ett objekt skapas kommer dessa fält alltid att ha dessa standardvärden.

Låt oss nu byta till vår Program.cs-fil och bara ta bort raden som anropar SetTutorial-metoden. Detta för att vi bara vill se hur konstruktören fungerar.

C#-konstruktör

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

Kodförklaring:-

  1. Det första steget är att skapa ett objekt för klassen Tutorial. Detta görs via nyckelordet "nya".
  2. Vi använder metoden GetTutorial i klassen Tutorial för att få TutorialName. Detta visas sedan för konsolen via metoden Console.WriteLine.

Om ovanstående kod matas in korrekt och programmet körs, kommer följande utdata att visas.

Produktion:

C#-konstruktör

Från utdata kan vi se att konstruktorn verkligen anropades och att värdet på TutorialName var satt till "Default".

Obs: Här hämtas värdet "default" från konstruktorn.

Sammanfattning

  • C# Access Modifiers eller Access Specifiers används för att definiera synligheten för en klassegenskap eller metod.
  • När modifierare för privat åtkomst är kopplad till antingen en egenskap eller en metod, betyder det att dessa medlemmar inte kan nås från något externt program.
  • När public access modifier är kopplad till antingen en egenskap eller en metod betyder det att dessa medlemmar kan nås från vilket externt program som helst.
  • När skyddad åtkomstmodifierare är kopplad till antingen en egenskap eller en metod, betyder det att dessa medlemmar endast kan nås av klasser som ärvts från den aktuella klassen.
  • När en intern åtkomstmodifierare är kopplad till antingen en egenskap eller en metod, kan dessa medlemmar endast nås av ett internt program men inte av ett externt program.
  • C#-konstruktörer används för att initiera värdena för klassfält när deras motsvarande objekt skapas.