Módosítók (specifikációk) elérése C#-ban programpéldákkal

⚡ Okos összefoglaló

A C#-ban a hozzáférés-módosítók olyan kulcsszavak, amelyek egy osztály, tulajdonság vagy metódus láthatóságát állítják be, korlátozva, hogy mely külső programok érhetik el azokat. A konstruktorok automatikusan inicializálják a mezőértékeket, valahányszor az osztály egy objektuma létrejön.

  • 🔐 Magán: A privát hozzáférés-módosító egy tagot ugyanarra az osztályra korlátoz, blokkolva a hozzáférést minden külső programból.
  • 🌐 Nyilvános: A nyilvános hozzáférés-módosító korlátozás nélkül elérhetővé tesz egy tulajdonságot vagy metódust bármely külső program számára.
  • 🛡️ Védett: A védett hozzáférés-módosító csak az aktuális osztályból örökölt osztályokkal osztja meg a tagokat.
  • 📦 Belső: A belső hozzáférés-módosító lehetővé teszi a hozzáférést ugyanazon assembly-n belül, de külső programból nem.
  • 🏗️ Építész: A konstruktor megosztja az osztály nevét, nem fogad el visszatérési típust, és inicializálja a mezőket, amikor egy objektum létrejön.
  • 🤖 AI segítség: A GitHub Copilot módosítókat és konstruktorokat állít össze, míg az ML.NET osztálytulajdonságokat képez le modellfunkciókhoz.

Hozzáférési módosítók (specifikátorok) C#-ban

Mi az az Access Modifier (Specifier) ​​a C#-ban?

Hozzáférés módosítók A C#-ban az Access Specifierek vagy hozzáférés-meghatározók olyan kulcsszavak, amelyek egy osztálytulajdonság vagy metódus láthatóságát definiálják. Akkor használjuk őket, ha nem szeretnénk, hogy más programok lássák egy osztály tulajdonságait vagy metódusait. A hozzáférés-módosítók korlátozzák a hozzáférést, így más programok nem láthatják egy osztály tulajdonságait vagy metódusait.

A C#-ban 6 típusú hozzáférés-módosító létezik:

  • Magán
  • nyilvános
  • Védett
  • belső
  • Védett belső
  • Privát védett

A C# fő hozzáférési módosítóiról programpéldákkal fogunk megismerkedni, az alábbiak szerint.

Privát hozzáférés-módosítók a C#-ban

Ha a Privát hozzáférés módosító egy tulajdonsághoz vagy metódushoz van csatolva, az azt jelenti, hogy ezek a tagok semmilyen külső programból nem érhetők el.

Példa a privát hozzáférés-módosítóra

Vegyünk egy példát, és nézzük meg, mi történik, ha a privát hozzáférés módosítót használjuk.

Módosítsuk az aktuális kódot a Tutorial.cs fájlunkban. A SetTutorial metódusban változtassuk a nyilvános kulcsszót privátra.

Privát hozzáférés-módosítók

Most térjünk át a Program.cs fájlunkra. Észreveheti, hogy a SetTutorial metódus alatt egy piros kacskaringós vonal látható.

Mivel a SetTutorial metódust most privátnak nyilvánítottuk a Tutorial osztályunkban, a Visual Studio ezt észlelte. Kiemelve közölte a felhasználóval, hogy most ez a módszer nem fog működni a Program.cs fájlból.

Privát hozzáférés módosító

C# nyilvános hozzáférés-módosítók

Ha egy tulajdonsághoz vagy metódushoz nyilvános hozzáférés módosító van csatolva, az azt jelenti, hogy ezek a tagok bármely külső programból elérhetők. Ezt már láthattuk korábbi példáinkban.

Példa nyilvános hozzáférés-módosítóra

C# nyilvános hozzáférés-módosítók

Mivel metódusainkat nyilvánosként határoztuk meg a Tutorial osztályban, a Program.cs fájlból érhetők el.

Védett hozzáférés-módosítók a C#-ban

Ha a védett hozzáférés módosító egy tulajdonsághoz vagy metódushoz van csatolva, az azt jelenti, hogy ezek a tagok csak a következőkkel érhetők el osztályok örököltek az áramból osztály. Ezt részletesebben az Öröklés osztályban magyarázzuk meg.

C# belső hozzáférés-módosítók

Ha egy tulajdonsághoz vagy metódushoz belső hozzáférés-módosító van csatolva, akkor ezek a tagok csak belső program által érhetők el, külső program nem.

C# konstruktor

C# A konstruktorokat az osztálymezők értékeinek inicializálására használják a megfelelő objektumok létrehozásakor. A konstruktor olyan metódus, amelynek ugyanaz a neve, mint az osztályé. Ha egy konstruktor definiálva van egy osztályban, akkor ez biztosítja az első metódust, amelyet egy objektum létrehozásakor hívunk meg. Tegyük fel, ha lenne egy Alkalmazott nevű osztályunk. A konstruktor metódus neve is Employee().

A következő kulcsfontosságú dolgokat kell megjegyezni a konstruktor módszerekkel kapcsolatban

  1. A konstruktor C# alapértelmezett hozzáférés-módosítóját nyilvánossá kell tenni.
  2. A konstruktor metódushoz nem szabad visszatérési típust megadni.

Példa a C# konstruktorra

Lássuk most, hogyan építhetjük be a kódunkba a konstruktorok felhasználóját. Konstruktorok segítségével inicializáljuk a TutorialID és TutorialName mezőket néhány alapértelmezett értékre az objektum létrehozásakor.

Step 1) Az első lépés a Tutorial osztályunk konstruktorjának létrehozása. Ebben a lépésben hozzáadjuk az alábbi kódot a Tutorial.cs fájlhoz.

C# konstruktor

Code Magyarázat:-

  1. Először hozzáadunk egy új metódust, amelynek ugyanaz a neve, mint az osztályé. Mivel ez megegyezik az osztály névvel, a C# konstruktor metódusként kezeli. Tehát most, amikor a hívó metódus létrehoz egy objektumot ebből az osztályból, ez a metódus hívódik meg alapértelmezés szerint.
  2. A Tutorial konstruktorban a TutorialID értékét 0-ra, a TutorialName értékét pedig „Default”-ra állítjuk. Tehát amikor egy objektumot létrehoznak, ezek a mezők mindig ezek az alapértelmezett értékek lesznek.

Most váltsunk át a Program.cs fájlra, és távolítsuk el a SetTutorial metódust hívó sort. Ez azért van, mert csak látni akarjuk, hogyan működik a konstruktor.

C# konstruktor

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 Magyarázat:-

  1. Az első lépés egy objektum létrehozása a Tutorial osztály számára. Ez az "új" kulcsszóval történik.
  2. A TutorialName lekéréséhez a Tutorial osztály GetTutorial metódusát használjuk. Ez ezután megjelenik a konzolon a Console.WriteLine metóduson keresztül.

Ha a fenti kódot megfelelően beírta és a program lefut, a következő kimenet jelenik meg.

output:

C# konstruktor

A kimenetből láthatjuk, hogy a konstruktort valóban meghívták, és a TutorialName értéke „Default”-ra van állítva.

Jegyzet: Itt az „alapértelmezett” érték kerül lekérésre a konstruktortól.

GYIK

Ha nincs megadva módosító, az osztály- és struktúratagok alapértelmezés szerint privát, a legfelső szintű típusok pedig belső típust kapnak, és rejtve maradnak, amíg ki nem szélesíted a láthatóságukat.

A Protected beállítás esetén egy tag ugyanahhoz az osztályhoz és bármely származtatott osztályhoz is elérhető, akár assembly-k között is. Az Internal beállítás esetén csak az azonos assembly-n belüli típusoknak van elérhető.

A Protected Internal (védett belső) hozzáférést biztosít ugyanabból az assemblyből vagy bármely származtatott osztályból. A Private protected (privát, védett) szigorúbb, csak az ugyanazon assemblyen belüli származtatott osztályokat engedélyezi.

A C# támogatja az alapértelmezett, paraméteres, másolt, statikus és privát konstruktorokat. Ezek inicializálják egy objektum mezőit, egyszer futtatják az osztálybeállítást, vagy klónozzák egy másik objektum értékeit.

Egy statikus konstruktor nem fogad el módosítókat vagy paramétereket. Egyszer fut le, mielőtt az első objektum létrejönne vagy a statikus tagok betöltődnek, inicializálva a statikus mezőket.

Igen. Egy osztály több konstruktort is definiálhat különböző paraméterlistákkal. A fordító azt választja ki, amelyik megfelel a new osztálynak átadott argumentumoknak.

Igen. A GitHub Copilot módosítókat, konstruktorokat és mezőinicializálókat javasol egy osztálynévből vagy megjegyzésből a Visual Studio-n belül, és VS Code. RevTekintse meg az egyes javasolt láthatósági szinteket.

Az ML.NET egy C# adatosztály nyilvános tulajdonságait modellező funkciókhoz és címkékhez rendeli. A nyilvános getterek és setterek lehetővé teszik ezen értékek beolvasását a betanítás során.

Foglald össze ezt a bejegyzést a következőképpen: