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

⚡ Smart sammanfattning

Åtkomstmodifierare i C# är nyckelord som anger synligheten för en klass, egenskap eller metod, och begränsar vilka externa program som kan nå dem. Konstruktorer initierar fältvärden automatiskt när ett objekt i klassen skapas.

  • 🔐 Privat: Modifieraren för privat åtkomst begränsar en medlem till samma klass och blockerar åtkomst från alla externa program.
  • 🌐 Offentlig: Modifieraren för offentlig åtkomst exponerar en egenskap eller metod för alla externa program utan begränsning.
  • 🛡️ Skyddade: Modifieraren för skyddad åtkomst delar endast medlemmar med klasser som ärvts från den aktuella klassen.
  • 📦 Internt: Den interna åtkomstmodifieraren tillåter åtkomst inom samma sammansättning men inte från ett externt program.
  • 🏗️ Byggare: En konstruktor delar klassnamnet, tar ingen returtyp och initierar fält när ett objekt skapas.
  • 🤖 AI-hjälp: GitHub Copilot använder modifierare och konstruktörer som scaffold, medan ML.NET mappar klassegenskaper till modellfunktioner.

Åtkomstmodifierare (Specifieringar) i C#

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

Åtkomstmodifierare Åtkomstspecifikationer eller åtkomstspecifikationer i C# är nyckelord 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

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

Code Fö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.

Vanliga frågor

Om ingen modifierare anges, sätts klass- och strukturmedlemmar som standard till privat och toppnivåtyper till interna, och förblir dolda tills du utökar deras synlighet.

Protected exponerar en medlem för samma klass och alla härledda klasser, även mellan assembler. Internal exponerar den endast för typer i samma assembler.

Protected internal tillåter åtkomst från samma assembly eller någon härledd klass. Private protected är striktare och tillåter endast härledda klasser inom samma assembly.

C# stöder standard-, parametriserade-, kopierings-, statiska- och privata konstruktorer. De initierar ett objekts fält, kör klassuppsättning en gång eller klonar ett annat objekts värden.

En statisk konstruktor tar inte emot modifierare eller parametrar. Den körs en gång, innan det första objektet skapas eller statiska medlemmar laddas, vilket initierar statiska fält.

Ja. En klass kan definiera flera konstruktorer med olika parameterlistor. Kompilatorn väljer den som matchar argumenten som skickas till new.

Ja. GitHub Copilot föreslår modifierare, konstruktorer och fältinitialiserare från ett klassnamn eller en kommentar i Visual Studio och VS Code. RevVisa varje föreslagen synlighetsnivå.

ML.NET mappar de publika egenskaperna för en C#-dataklass till modellfunktioner och etiketter. Publika getters och setters låter den läsa dessa värden under träning.

Sammanfatta detta inlägg med: