Toegang tot modifiers (specificaties) in C# met programmavoorbeelden

โšก Slimme samenvatting

Toegangsmodifiers in C# zijn trefwoorden die de zichtbaarheid van een klasse, eigenschap of methode bepalen, waardoor wordt beperkt welke externe programma's er toegang toe hebben. Constructors initialiseren veldwaarden automatisch wanneer een object van de klasse wordt aangemaakt.

  • ๐Ÿ” private: De toegangsaanpasser 'private' beperkt een lid tot dezelfde klasse en blokkeert toegang vanuit elk extern programma.
  • ๐ŸŒ Openbaar: De openbare toegangsaanpasser stelt een eigenschap of methode zonder beperkingen beschikbaar aan elk extern programma.
  • ๐Ÿ›ก๏ธ beveiligd: De beveiligde toegangsaanpasser deelt leden alleen met klassen die van de huidige klasse zijn overgeรซrfd.
  • ???? Intern: De interne toegangsaanpasser staat toegang toe binnen dezelfde assembly, maar niet vanuit een extern programma.
  • ???? ๏ธ Constructeur: Een constructor deelt de klassenaam, heeft geen retourtype en initialiseert velden wanneer een object wordt aangemaakt.
  • ๐Ÿค– AI-assistentie: GitHub Copilot genereert een basisstructuur voor modifiers en constructors, terwijl ML.NET klasse-eigenschappen koppelt aan modelkenmerken.

Toegangsmodifiers (specificaties) in C#

Wat is Access Modifier (Specifier) โ€‹โ€‹in C#?

Toegangsmodificaties Toegangsmodifiers in C# zijn de sleutelwoorden die worden gebruikt om de zichtbaarheid van een klasse-eigenschap of -methode te definiรซren. Ze worden gebruikt wanneer je niet wilt dat andere programma's de eigenschappen of methoden van een klasse kunnen zien. Toegangsmodifiers beperken de toegang, zodat andere programma's de eigenschappen of methoden van een klasse niet kunnen zien.

Er zijn 6 soorten toegangsmodifiers in C#:

  • Privรฉ
  • Publieke
  • Beschermd
  • Intern
  • Beschermd intern
  • Privรฉ beschermd

We zullen de belangrijkste toegangsmodificatoren in C# leren kennen met programmavoorbeelden zoals hieronder uitgelegd.

Modifiers voor privรฉtoegang in C#

Wanneer de Private Access Modifier aan een eigenschap of een methode is gekoppeld, betekent dit dat deze leden niet toegankelijk zijn vanuit een extern programma.

Voorbeeld van een privรฉtoegangsmodificator

Laten we een voorbeeld nemen en kijken wat er gebeurt als we de privรฉtoegangsmodifier gebruiken.

Laten we de huidige code in ons Tutorial.cs-bestand wijzigen. Laten we in de SetTutorial-methode het openbare sleutelwoord wijzigen in privรฉ.

Modificatoren voor privรฉtoegang

Laten we nu overschakelen naar ons Program.cs-bestand. U zult merken dat er een rode kronkelige lijn is onder de SetTutorial-methode.

Omdat we de SetTutorial-methode nu als privรฉ hebben gedeclareerd in onze Tutorial-klasse, heeft Visual Studio dit gedetecteerd. Het heeft de gebruiker verteld door het te markeren dat deze methode nu niet meer zal werken vanuit het bestand Program.cs.

Modificatie voor privรฉtoegang

C# Modifiers voor openbare toegang

Wanneer de modifier voor openbare toegang aan een eigenschap of een methode is gekoppeld, betekent dit dat deze leden toegankelijk zijn vanuit elk extern programma. We hebben dit al gezien in onze eerdere voorbeelden.

Voorbeeld van een modifier voor openbare toegang

C# Modifiers voor openbare toegang

Omdat we onze methoden in de klasse Tutorial als openbaar hebben gedefinieerd, zijn ze toegankelijk via het bestand Program.cs.

Beschermde toegangsmodificatoren in C#

Wanneer de Protected Access Modifier aan een eigenschap of een methode is gekoppeld, betekent dit dat deze leden alleen toegankelijk zijn voor klassen geรซrfd van de huidige klasse. Dit wordt in meer detail uitgelegd in de Overervingsklasse.

C# Interne toegangsmodificatoren

Wanneer een interne toegangsmodifier aan een eigenschap of een methode is gekoppeld, zijn deze leden alleen toegankelijk voor een intern programma, maar niet voor een extern programma.

C#-constructeur

C# Constructors worden gebruikt om de waarden van klassenvelden te initialiseren wanneer de bijbehorende objecten worden gemaakt. Een constructor is een methode die dezelfde naam heeft als die van de klasse. Als een constructor in een klasse is gedefinieerd, zal deze de eerste methode bieden die wordt aangeroepen wanneer een object wordt gemaakt. Stel dat we een klasse hadden met de naam Werknemer. De constructormethode zou ook de naam Employee() krijgen.

De volgende belangrijke zaken moeten worden opgemerkt over constructormethoden

  1. De standaardtoegangsmodifier in C# voor de constructor moet openbaar worden gemaakt.
  2. Er mag geen retourtype zijn voor de constructormethode.

Voorbeeld van C#-constructor

Laten we nu kijken hoe we de gebruiker van constructors in onze code kunnen opnemen. We zullen constructors gebruiken om de velden TutorialID en TutorialName te initialiseren naar een aantal standaardwaarden wanneer het object wordt gemaakt.

Stap 1) De eerste stap is het maken van de constructor voor onze Tutorial-klasse. In deze stap voegen we de onderstaande code toe aan het bestand Tutorial.cs.

C#-constructeur

Code Uitleg:-

  1. We voegen eerst een nieuwe methode toe die dezelfde naam heeft als die van de klasse. Omdat het dezelfde naam heeft als de klasse, behandelt C# dit als een constructormethode. Dus telkens wanneer de aanroepende methode een object van deze klasse aanmaakt, wordt deze methode standaard aangeroepen.
  2. In de Tutorial-constructor stellen we de waarde van TutorialID in op 0 en TutorialName op "Default". Wanneer er dus een object wordt gemaakt, hebben deze velden altijd deze standaardwaarden.

Laten we nu overschakelen naar ons Program.cs-bestand en gewoon de regel verwijderen, die de SetTutorial-methode aanroept. Dit komt omdat we gewoon willen zien hoe de constructor werkt.

C#-constructeur

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 Uitleg:-

  1. De eerste stap is het maken van een object voor de klasse Tutorial. Dit gebeurt via het trefwoord 'nieuw'.
  2. We gebruiken de GetTutorial-methode van de Tutorial-klasse om de TutorialName op te halen. Deze wordt vervolgens weergegeven op de console via de Console.WriteLine-methode.

Als de bovenstaande code correct is ingevoerd en het programma wordt uitgevoerd, wordt de volgende uitvoer weergegeven.

Output:

C#-constructeur

Uit de uitvoer kunnen we zien dat de constructor inderdaad is aangeroepen en dat de waarde van de TutorialName is ingesteld op "Default".

Let op: Hier wordt de waarde โ€œdefaultโ€ opgehaald uit de constructor.

Veelgestelde vragen

Als er geen modifier is opgegeven, zijn klasse- en structuurleden standaard privรฉ en typen op het hoogste niveau intern, en blijven ze verborgen totdat je hun zichtbaarheid vergroot.

'Protected' maakt een lid toegankelijk voor dezelfde klasse en alle afgeleide klassen, zelfs over verschillende assemblies heen. 'Internal' maakt het alleen toegankelijk voor typen binnen dezelfde assembly.

'Protected internal' staat toegang toe vanuit dezelfde assembly of elke afgeleide klasse. 'Private protected' is strenger en staat alleen toegang toe vanuit afgeleide klassen binnen dezelfde assembly.

C# ondersteunt standaard-, geparameteriseerde, kopieer-, statische en private constructors. Deze initialiseren de velden van een object, voeren eenmalig de klasse-instellingen uit of klonen de waarden van een ander object.

Een statische constructor accepteert geen modifiers of parameters. Hij wordt eenmaal uitgevoerd, voordat het eerste object wordt aangemaakt of statische leden worden geladen, en initialiseert statische velden.

Ja. Een klasse kan meerdere constructors definiรซren met verschillende parameterlijsten. De compiler kiest de constructor die overeenkomt met de argumenten die aan `new` worden doorgegeven.

Ja. GitHub Copilot suggereert modifiers, constructors en veldinitialisaties op basis van een klassenaam of opmerking in Visual Studio. VS Code. RevBekijk elk voorgesteld zichtbaarheidsniveau.

ML.NET koppelt de openbare eigenschappen van een C#-dataclass aan modelkenmerken en -labels. Openbare getters en setters maken het mogelijk om deze waarden tijdens de training uit te lezen.

Vat dit bericht samen met: