Megosztás a következőn keresztül:


A C osztályainak, szerkezeteinek és rekordjainak áttekintése #

A C#-ban egy típus – osztály, szerkezet vagy rekord – definíciója olyan, mint egy terv, amely meghatározza, hogy a típus mire képes. Az objektumok alapvetően memóriablokkok, amelyek a tervnek megfelelően vannak lefoglalva és konfigurálva. Ez a cikk áttekintést nyújt ezekről a tervekről és azok funkcióiról. A sorozat következő cikke az objektumokat mutatja be.

Beágyazás

A beágyazást néha az objektumorientált programozás első pillérének vagy alapelvének is nevezik. Egy osztály vagy struktúra megadhatja, hogy az egyes tagok milyen módon legyenek elérhetők az osztályon vagy a szerkezeten kívüli kódhoz. Az osztályon vagy szerelvényen kívülről nem használható metódusok és változók elrejthetők a kódolási hibák vagy rosszindulatú támadások lehetőségének korlátozása érdekében. További információkért tekintse meg az objektumorientált programozási oktatóanyagot.

Tagok

Egy típus tagjai tartalmazzák az összes metódust, mezőt, állandót, tulajdonságot és eseményt. A C#-ban nincsenek globális változók vagy metódusok, mint más nyelveken. Még a program belépési pontját, a Main metódust is osztályon vagy szerkezeten belül kell deklarálni (implicit módon legfelső szintű utasítások használatakor).

Az alábbi lista tartalmazza az osztályban, szerkezetben vagy rekordban deklarálható tagok összes típusát.

  • Mezők
  • Állandók
  • Tulajdonságok
  • Metódusok
  • Konstruktorok
  • esemény
  • Véglegesítők
  • Indexelők
  • Operátorok
  • Beágyazott típusok

További információ: Tagok.

Akadálymentesség

Egyes metódusokat és tulajdonságokat egy osztályon vagy szerkezeten kívüli kódból, más néven ügyfélkódból kell meghívni vagy elérni. Más metódusok és tulajdonságok csak az osztályban vagy a strukturálásban használhatók. Fontos korlátozni a kód akadálymentességét, hogy csak a kívánt ügyfélkód érhesse el. A következő hozzáférési módosítók használatával adhatja meg, hogy a típusok és tagjaik milyen módon legyenek elérhetők az ügyfélkódhoz:

Az alapértelmezett akadálymentesség.private

Öröklődés

Az osztályok (de a szerkezetek nem) támogatják az öröklés fogalmát. Egy másik osztályból, az úgynevezett alaposztályból származtatott osztály automatikusan tartalmazza az alaposztály összes nyilvános, védett és belső tagját, kivéve annak konstruktorait és véglegesítőit.

Az osztályok absztraktként deklarálhatók, ami azt jelenti, hogy egy vagy több metódusuk nem rendelkezik implementációval. Bár az absztrakt osztályok nem hozhatók létre közvetlenül, alaposztályként szolgálhatnak a hiányzó implementációt biztosító más osztályok számára. Az osztályok lezártként is deklarálhatók, hogy más osztályok ne örökölhessenek tőlük.

További információ: Öröklés és polimorfizmus.

Interfészek

Az osztályok, a szerkezetek és a rekordok több interfészt is implementálhatnak. Az illesztőből való implementálás azt jelenti, hogy a típus az interfészben definiált összes metódust implementálja. További információ: Interfészek.

Általános típusok

Az osztályok, a szerkezetek és a rekordok egy vagy több típusparaméterrel határozhatók meg. Az ügyfélkód adja meg a típust, amikor létrehoz egy példányt a típusból. A List<T> névtérben lévő System.Collections.Generic osztály például egy típusparaméterrel van definiálva. Az ügyfélkód létrehoz egy példányt, List<string> vagy List<int> megadja, hogy a lista milyen típusú lesz. További információt az Általánosak című témakörben talál.

Statikus típusok

Az osztályok (de a szerkezetek és rekordok nem) deklarálhatók .static A statikus osztályok csak statikus tagokat tartalmazhatnak, és nem példányosíthatók a new kulcsszóval. Az osztály egy példánya betöltődik a memóriába, amikor a program betöltődik, és a tagjai az osztálynéven keresztül érhetők el. Az osztályok, a szerkezetek és a rekordok statikus tagokat tartalmazhatnak. További információ: Statikus osztályok és statikus osztálytagok.

Beágyazott típusok

Egy osztály, struktúra vagy rekord beágyazható egy másik osztályba, szerkezetbe vagy rekordba. További információ: Beágyazott típusok.

Részleges típusok

Egy osztály, struktúra vagy metódus egy részét egy kódfájlban, egy másikat pedig egy külön kódfájlban határozhatja meg. További információ: Részleges osztályok és metódusok.

Objektum-inicializálók

Osztály- és objektumgyűjteményeket példányosíthat és inicializálhat, ha értékeket rendel a tulajdonságaihoz. További információ : Objektumok inicializálása objektum inicializáló használatával.

Névtelen típusok

Olyan helyzetekben, amikor nem kényelmes vagy szükséges névvel ellátott osztályt létrehozni, névtelen típusokat használ. A névtelen típusokat a névvel ellátott adattagok határozzák meg. További információ: Névtelen típusok.

Bővítő metódusok

Az osztályokat külön típus létrehozásával "bővítheti" származtatott osztály létrehozása nélkül. Ez a típus olyan metódusokat tartalmaz, amelyek úgy hívhatók meg, mintha az eredeti típushoz tartoznának. További információkért lásd a Bővítménymetelyek című témakört.)

Implicit módon beírt helyi változók

Egy osztályon vagy struct metóduson belül implicit beírással utasíthatja a fordítót a változó típusának meghatározására a fordítás időpontjában. További információ: var (C# referencia).

Rekordok

A C# 9 bemutatja a record típust, egy referenciatípust, amelyet osztály vagy struktúra helyett létrehozhat. A rekordok beépített viselkedéssel rendelkező osztályok, amelyek nem módosítható típusokba ágyaznak be adatokat. A C# 10 bemutatja az értéktípust record struct . Egy rekord (vagy record classrecord struct) a következő funkciókat biztosítja:

  • Rövid szintaxis nem módosítható tulajdonságokkal rendelkező referenciatípus létrehozásához.
  • Értékegyenlőség. Egy rekordtípus két változója egyenlő, ha ugyanazzal a típussal rendelkeznek, és ha minden mező esetében a két rekord értéke egyenlő. Az osztályok hivatkozási egyenlőséget használnak: egy osztálytípus két változója egyenlő, ha ugyanarra az objektumra hivatkoznak.
  • A nem strukturált mutáció tömör szintaxisa. A with kifejezések segítségével létrehozhat egy új rekordpéldányt, amely egy meglévő példány másolata, de a megadott tulajdonságértékek módosultak.
  • Beépített formázás a megjelenítéshez. A ToString metódus kinyomtatja a rekordtípus nevét, valamint a nyilvános tulajdonságok nevét és értékeit.
  • Öröklődési hierarchiák támogatása rekordosztályokban. A rekordosztályok támogatják az öröklést. A rekordstruktúra nem támogatja az öröklést.

További információ: Rekordok.

C# nyelvspecifikáció

További információkért lásd a C# nyelv specifikációját. A nyelvi specifikáció a C#-szintaxis és -használat végleges forrása.