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


A C objektumorientált technikáinak á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 a terv szerint lefoglalt és konfigurált memóriablokkok. Ez a cikk áttekintést nyújt ezekről a tervekről és azok funkcióiról. A sorozat következő cikke objektumokat mutat 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ály vagy a szerelvény fogyasztói csoportján kívül eső fogyasztók számára nem szánt tagok rejtve vannak, hogy korlátozzák a kódolási hibák vagy rosszindulatú kihasználások lehetőségét. További információkért tekintse meg az objektumorientált programozási oktatóanyagot.

Tagok

A 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 nyelvekben. 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ó összes tagtípust.

  • Mezők
  • Állandók
  • Tulajdonságok
  • Módszerek
  • Konstruktorok
  • Események
  • Véglegesítők
  • Indexelők
  • Működtetők
  • Beágyazott típusok

További információ: Tagok.

Hozzáférhetősé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 szerkezetben 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 a tagok milyen módon legyenek elérhetők az ügyfélkódhoz:

Az alapértelmezett akadálymentesség private.

Örökség

Az osztályok (de a szerkezetek nem) támogatják az öröklés fogalmát. Egy másik, úgynevezett alaposztályból származó 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 közvetlenül nem hozhatók létre, alaposztályként szolgálhatnak a hiányzó megvalósítást 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.

Felületek

Az osztályok, a szerkezetek és a rekordok több interfészt is implementálhatnak. A felületről való implementálás azt jelenti, hogy a típus az interfészben meghatározott ö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 megadja 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ályt például egy típusparaméterrel definiálják. Az ügyfélkód létrehoz egy List<string> vagy List<int> példányt annak megadásához, hogy a lista milyen típust tartalmaz. További információ: Generics.

Statikus típusok

Az osztályok (de nem szerkezetek vagy rekordok) deklarálhatók .static A statikus osztályok csak statikus tagokat tartalmazhatnak, és nem hozhatók létre 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 tagok 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, szerkezet 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ásik részt 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- vagy szerkezetobjektumokat é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évvel ellátott adattagok névtelen típusokat határoznak meg. További információ: Névtelen típusok.

Kiterjesztett tagok

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: Bővítési módszerek.

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

Egy osztály- vagy struktúrametóduson belül implicit gépeléssel utasíthatja a fordítót a változó típusának meghatározására fordításkor. További információ: var (C# referencia).

Feljegyzések

Felveheti a record módosítót egy osztályhoz vagy egy struktúrához. A rekordok az értékalapú egyenlőség beépített viselkedésével rendelkező típusok. 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 azonos típusúak, é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.
  • A rekordosztályok öröklési hierarchiáinak támogatása. 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# nyelvi specifikáció

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