Få adgang til Modifiers (Specifiers) i C# med programeksempler

⚡ Smart opsummering

Adgangsmodifikatorer i C# er nøgleord, der angiver synligheden af ​​en klasse, egenskab eller metode og begrænser, hvilke eksterne programmer der kan nå dem. Konstruktører initialiserer feltværdier automatisk, når et objekt i klassen oprettes.

  • 🔐 Privat: Den private adgangsmodifikator begrænser et medlem til den samme klasse og blokerer adgang fra ethvert eksternt program.
  • 🌐 Offentlig: Public access-modifikatoren eksponerer en egenskab eller metode for ethvert eksternt program uden begrænsning.
  • 🛡️ Beskyttet: Den beskyttede adgangsmodifikator deler kun medlemmer med klasser, der er arvet fra den aktuelle klasse.
  • 📦 Intern: Den interne adgangsmodifikator tillader adgang inden for den samme assembly, men ikke fra et eksternt program.
  • 🏗️ Bygger: En konstruktør deler klassenavnet, tager ingen returtype og initialiserer felter, når et objekt oprettes.
  • 🤖 AI assistance: GitHub Copilot scaffolder modifikatorer og konstruktører, mens ML.NET kortlægger klasseegenskaber til modelfunktioner.

Adgangsmodifikatorer (specifikationer) i C#

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

Adgangsmodifikatorer Adgangsspecifikationer eller adgangsspecifikationer i C# er de nøgleord, der bruges til at definere synligheden af ​​en klasseegenskab eller -metode. Det bruges, når du ikke ønsker, at andre programmer skal se egenskaberne eller metoderne for en klasse. Adgangsmodifikatorer begrænser adgangen, så andre programmer ikke kan se egenskaberne eller metoderne for en klasse.

Der er 6 typer adgangsmodifikatorer i C#:

  • Privat
  • offentlige
  • Beskyttet
  • Intern
  • Beskyttet indre
  • Privat beskyttet

Vi vil lære om de vigtigste adgangsmodifikatorer i C# med programeksempler som forklaret nedenfor.

Modifikatorer for privat adgang i C#

Når Privat adgangsmodifikator er knyttet til enten en egenskab eller en metode, betyder det, at disse medlemmer ikke kan tilgås fra noget eksternt program.

Eksempel på modifikator for privat adgang

Lad os tage et eksempel og se, hvad der sker, når vi bruger den private adgangsmodifikator.

Lad os ændre den aktuelle kode i vores Tutorial.cs-fil. Lad os i SetTutorial-metoden ændre det offentlige søgeord til privat.

Modifikatorer for privat adgang

Lad os nu skifte til vores Program.cs-fil. Du vil bemærke, at der er en rød snoet linje under SetTutorial-metoden.

Da vi nu har erklæret SetTutorial-metoden som privat i vores Tutorial-klasse, har Visual Studio opdaget dette. Det har fortalt brugeren ved at fremhæve det, at nu vil denne metode ikke fungere fra filen Program.cs.

Modifikator for privat adgang

C# Public Access-modifikatorer

Når Public access modifier er knyttet til enten en egenskab eller en metode, betyder det, at disse medlemmer kan tilgås fra ethvert eksternt program. Det har vi allerede set i vores tidligere eksempler.

Eksempel på Public Access Modifier

C# Public Access-modifikatorer

Da vi har defineret vores metoder som offentlige i klassen Tutorial, kan de tilgås fra filen Program.cs.

Beskyttede adgangsmodifikatorer i C#

Når beskyttet adgangsmodifikator er knyttet til enten en egenskab eller en metode, betyder det, at disse medlemmer kun kan tilgås af klasser arvet fra strømmen klasse. Dette vil blive forklaret mere detaljeret i klassen Arv.

C# interne adgangsmodifikatorer

Når en intern adgangsmodifikator er knyttet til enten en egenskab eller en metode, kan disse medlemmer kun tilgås af et internt program, men ikke af et eksternt program.

C# konstruktør

C# Konstruktører er vant til at initialisere værdierne af klassefelter, når deres tilsvarende objekter oprettes. En konstruktør er en metode, der har samme navn som klassens. Hvis en konstruktør er defineret i en klasse, vil den give den første metode, som kaldes, når et objekt oprettes. Antag, hvis vi havde en klasse, der hed Medarbejder. Konstruktørmetoden vil også blive navngivet som Employee().

Følgende vigtige ting skal bemærkes om konstruktørmetoder

  1. C#-standardadgangsmodifikatoren for konstruktøren skal gøres som offentlig.
  2. Der bør ikke være nogen returtype for konstruktørmetoden.

Eksempel på C# Constructor

Lad os nu se, hvordan vi kan inkorporere brugeren af ​​konstruktører i vores kode. Vi vil bruge konstruktører til at initialisere felterne TutorialID og TutorialName til nogle standardværdier, når objektet oprettes.

Trin 1) Det første trin er at oprette konstruktøren til vores Tutorial-klasse. I dette trin tilføjer vi nedenstående kode til filen Tutorial.cs.

C# konstruktør

Code Forklaring:-

  1. Vi tilføjer først en ny metode, som har samme navn som klassens. Fordi det er det samme navn som klassen, behandler C# dette som en konstruktørmetode. Så nu når den kaldende metode opretter et objekt af denne klasse, vil denne metode blive kaldt som standard.
  2. I Tutorial-konstruktøren sætter vi værdien af ​​TutorialID til 0 og TutorialName til "Standard". Så hver gang et objekt oprettes, vil disse felter altid have disse standardværdier.

Lad os nu skifte til vores Program.cs-fil og bare fjerne linjen, som kalder SetTutorial-metoden. Det 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 trin er at oprette et objekt til Tutorial-klassen. Dette gøres via det 'nye' søgeord.
  2. Vi bruger GetTutorial-metoden i Tutorial-klassen for at få TutorialName. Dette vises derefter til konsollen via Console.WriteLine-metoden.

Hvis ovenstående kode er indtastet korrekt, og programmet køres, vil følgende output blive vist.

Output:

C# konstruktør

Fra outputtet kan vi se, at konstruktøren faktisk blev kaldt, og at værdien af ​​TutorialName blev sat til "Standard".

Bemærk: Her hentes værdien "default" fra konstruktøren.

Ofte Stillede Spørgsmål

Hvis der ikke er angivet nogen modifikator, indstilles klasse- og strukturmedlemmer som standard til private, og topniveautyper indstilles til interne, og de forbliver skjult, indtil du udvider deres synlighed.

Protected eksponerer et medlem for den samme klasse og enhver afledt klasse, selv på tværs af assembleringer. Internal eksponerer det kun for typer i den samme assemblering.

Protected internal tillader adgang fra den samme assembly eller enhver afledt klasse. Private protected er strengere og tillader kun afledte klasser inden for den samme assembly.

C# understøtter standard-, parameteriserede-, kopi-, statiske- og private-konstruktører. De initialiserer et objekts felter, kører klasseopsætning én gang eller kloner et andet objekts værdier.

En statisk konstruktør tager ingen modifikator eller parametre. Den kører én gang, før det første objekt oprettes eller statiske medlemmer indlæses, hvilket initialiserer statiske felter.

Ja. En klasse kan definere flere konstruktører med forskellige parameterlister. Compileren vælger den, der matcher de argumenter, der 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ået synlighedsniveau.

ML.NET knytter de offentlige egenskaber for en C#-dataklasse til modelfunktioner og -etiketter. Offentlige gettere og settere lader det læse disse værdier under træning.

Opsummer dette indlæg med: