Få tilgang til modifikatorer (spesifikasjoner) i C# med programeksempler

⚡ Smart oppsummering

Tilgangsmodifikatorer i C# er nøkkelord som angir synligheten til en klasse, egenskap eller metode, og begrenser hvilke eksterne programmer som kan nå dem. Konstruktører initialiserer feltverdier automatisk når et objekt i klassen opprettes.

  • 🔐 Private: Privat tilgangsmodifikatoren begrenser et medlem til samme klasse, og blokkerer tilgang fra ethvert eksternt program.
  • 🌐 Offentlig: Modifikatoren for offentlig tilgang eksponerer en egenskap eller metode for ethvert eksternt program uten begrensninger.
  • 🛡️ Beskyttet: Modifikatoren for beskyttet tilgang deler bare medlemmer med klasser som er arvet fra gjeldende klasse.
  • 📦 Internt: Den interne tilgangsmodifikatoren tillater tilgang innenfor samme samling, men ikke fra et eksternt program.
  • 🏗️ Konstruktør: En konstruktør deler klassenavnet, tar ingen returtype og initialiserer felt når et objekt opprettes.
  • 🤖 AI-hjelp: GitHub Copilot stillaserer modifikatorer og konstruktører, mens ML.NET tilordner klasseegenskaper til modellfunksjoner.

Tilgangsmodifikatorer (spesifikatorer) i C#

Hva er Access Modifier (Specifier) ​​i C#?

Tilgangsmodifikatorer eller tilgangsspesifikatorer i C# er nøkkelordene som brukes til å definere synligheten til en klasseegenskap eller -metode. Det brukes når du ikke vil at andre programmer skal se egenskapene eller metodene til en klasse. Tilgangsmodifikatorer begrenser tilgang slik at andre programmer ikke kan se egenskapene eller metodene til en klasse.

Det er 6 typer tilgangsmodifikatorer i C#:

  • Privat
  • offentlig
  • beskyttet
  • Intern
  • Beskyttet intern
  • Privat beskyttet

Vi vil lære om hovedtilgangsmodifikatorene i C# med programeksempler som forklart nedenfor.

Modifikatorer for privat tilgang i C#

Når modifikatoren for privat tilgang er knyttet til enten en egenskap eller en metode, betyr det at disse medlemmene ikke kan nås fra noe eksternt program.

Eksempel på Modifikator for privat tilgang

La oss ta et eksempel og se hva som skjer når vi bruker modifikatoren for privat tilgang.

La oss endre gjeldende kode i vår Tutorial.cs-fil. I SetTutorial-metoden, la oss endre det offentlige nøkkelordet til privat.

Modifikatorer for privat tilgang

La oss nå bytte til vår Program.cs-fil. Du vil legge merke til at det er en rød kronglete linje under SetTutorial-metoden.

Siden vi nå har erklært SetTutorial-metoden som privat i opplæringsklassen vår, har Visual Studio oppdaget dette. Den har fortalt brukeren ved å markere den at nå vil denne metoden ikke fungere fra Program.cs-filen.

Modifikator for privat tilgang

C# Public Access Modifikatorer

Når Offentlig tilgang-modifikator er knyttet til enten en egenskap eller en metode, betyr det at disse medlemmene kan nås fra et hvilket som helst eksternt program. Vi har allerede sett dette i våre tidligere eksempler.

Eksempel på Public Access Modifier

C# Public Access Modifikatorer

Siden vi har definert metodene våre som offentlige i opplæringsklassen, kan de nås fra Program.cs-filen.

Protected Access Modifiers i C#

Når beskyttet tilgangsmodifikator er knyttet til enten en egenskap eller en metode, betyr det at disse medlemmene kun kan nås av klasser arvet fra gjeldende klasse. Dette vil bli forklart nærmere i Arvklassen.

C# interne tilgangsmodifikatorer

Når en intern tilgangsmodifikator er knyttet til enten en egenskap eller en metode, kan disse medlemmene bare nås av et internt program, men ikke av et eksternt program.

C#-konstruktør

C# Konstruktører er vant til å initialisere verdiene til klassefelt når de tilsvarende objektene deres opprettes. En konstruktør er en metode som har samme navn som klassen. Hvis en konstruktør er definert i en klasse, vil den gi den første metoden som kalles når et objekt opprettes. Tenk om vi hadde en klasse som heter Ansatt. Konstruktørmetoden vil også bli navngitt som Employee().

Følgende viktige ting må bemerkes om konstruktørmetoder

  1. C# standard tilgangsmodifikator for konstruktøren må gjøres som offentlig.
  2. Det skal ikke være noen returtype for konstruktørmetoden.

Eksempel på C# Constructor

La oss nå se hvordan vi kan inkludere brukeren av konstruktører i koden vår. Vi vil bruke konstruktører for å initialisere TutorialID- og TutorialName-feltene til noen standardverdier når objektet opprettes.

Trinn 1) Det første trinnet er å lage konstruktøren for opplæringsklassen vår. I dette trinnet legger vi til koden nedenfor i Tutorial.cs-filen.

C#-konstruktør

Code Forklaring:-

  1. Vi legger først til en ny metode som har samme navn som klassen. Fordi det er samme navn som klassen, behandler C# dette som en konstruktørmetode. Så nå når kallemetoden oppretter et objekt av denne klassen, vil denne metoden bli kalt som standard.
  2. I Tutorial-konstruktøren setter vi verdien av TutorialID til 0 og TutorialName til "Standard". Så hver gang et objekt opprettes, vil disse feltene alltid ha disse standardverdiene.

La oss nå bytte til vår Program.cs-fil og bare fjerne linjen, som kaller SetTutorial-metoden. Dette er fordi vi bare vil se hvordan konstruktøren fungerer.

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

Code Forklaring:-

  1. Det første trinnet er å lage et objekt for opplæringsklassen. Dette gjøres via søkeordet 'nye'.
  2. Vi bruker GetTutorial-metoden til Tutorial-klassen for å få TutorialName. Dette vises deretter til konsollen via Console.WriteLine-metoden.

Hvis koden ovenfor angis riktig og programmet kjøres, vil følgende utgang vises.

Utgang:

C#-konstruktør

Fra utdataene kan vi se at konstruktøren faktisk ble kalt og at verdien til TutorialName ble satt til "Standard".

OBS: Her hentes verdien "default" fra konstruktøren.

Spørsmål og svar

Hvis ingen modifikator er spesifisert, vil klasse- og strukturmedlemmer som standard settes til private og toppnivåtyper settes til internal, og forbli skjult inntil du utvider synligheten deres.

Protected eksponerer et medlem for samme klasse og enhver avledet klasse, selv på tvers av samlinger. Internal eksponerer det bare for typer i samme samling.

Protected internal tillater tilgang fra samme assembly eller en hvilken som helst avledet klasse. Private protected er strengere og tillater kun avledede klasser innenfor samme assembly.

C# støtter standard-, parameteriserte-, kopierings-, statiske- og private konstruktører. De initialiserer et objekts felt, kjører klasseoppsett én gang eller kloner et annet objekts verdier.

En statisk konstruktør tar ingen modifikator eller parametere. Den kjører én gang, før det første objektet opprettes eller statiske medlemmer lastes inn, og initialiserer statiske felt.

Ja. En klasse kan definere flere konstruktører med forskjellige parameterlister. Kompilatoren velger den som samsvarer med argumentene som sendes til new.

Ja. GitHub Copilot foreslår modifikatorer, konstruktører og feltinitialisatorer fra et klassenavn eller en kommentar i Visual Studio, og VS Code. RevSe hvert foreslåtte synlighetsnivå.

ML.NET tilordner de offentlige egenskapene til en C#-dataklasse til modellfunksjoner og -etiketter. Offentlige gettere og settere lar den lese disse verdiene under trening.

Oppsummer dette innlegget med: