C # Generics (Magyar)
Generic azt jelenti, az általános forma, nem specifikus. A C# – ban a generikus azt jelenti, hogy nem specifikus egy adott adattípusra.
C # lehetővé teszi általános osztályok, interfészek, absztrakt osztályok, mezők,módszerek, statikus módszerek, tulajdonságok, események, küldöttek és operátorok meghatározását a típusparaméter segítségével, a konkrét adattípus nélkül. A típusparaméter a generikus típus példányának létrehozásakor megadott adott típus helyőrzője.
egy általános típust úgy deklarálnak, hogy egy típusnevet zárójelben egy típusparamétert adnak meg, pl., TypeName<T>
ahol T
egy típusparaméter.
generikus osztály
a generikus osztályokat egy típusparaméterrel definiáljuk szögletes zárójelben az osztály neve után. Az alábbiakban egy általános osztályt határozunk meg.
felett, a DataStore
általános osztály., T
type paraméternek nevezzük, amely a DataStore
osztály mezőinek, tulajdonságainak, módszerparamétereinek, visszatérési típusainak és küldeményeinek típusaként használható. Például aData
Generikus tulajdonság, mivel az adott adattípus helyett aT
típusparamétert használtuk.
T
típusparaméterként használni. Bármely nevet megadhat egy típusparaméternek., Általában T
akkor használatos, ha csak egy típusparaméter van. Ajánlott egy olvashatóbb típusparaméter nevet használni, mint például a TSession
, TKey
, TValue
stb. Tudjon meg többet a Típusparaméterek elnevezési Irányelveiről Több típusparamétert is meghatározhat vesszővel elválasztva.
generikus osztály
Generikus osztályok példányát hozhatja létre egy tényleges típus szögletes zárójelben történő megadásával., A következő létrehoz egy példányt a generikus osztály DataStore
.
fent megadtuk a string
írja be a szögletes zárójelbe egy példány létrehozása közben. Tehát a T
helyébe egy string
típus lép, ahol T
fordításkor az egész osztályban használják. Ezért a Data
tulajdonság típusa a string
.
az alábbi ábra szemlélteti a generikumok működését.,
karakterláncértéket rendelhet a Data
tulajdonsághoz. A karakterlánctól eltérő értékek hozzárendelése fordítási hibát eredményez.
megadhatja a különböző objektumok különböző adattípusait, az alábbiak szerint.
Általános Osztályjellemzők
- egy generikus osztály növeli az újrafelhasználhatóságot. A több típusparaméter azt jelenti, hogy újrafelhasználható lesz., A túl sok általánosítás azonban megnehezíti a kód megértését és fenntartását.
- a generikus osztály lehet alaposztály más generikus vagy nem Generikus osztályokhoz vagy absztrakt osztályokhoz.
- a generikus osztály származhat más generikus vagy nem Generikus interfészekből, osztályokból vagy absztrakt osztályokból.
Generikus mezők
egy generikus osztály tartalmazhat Generikus mezőket. Ezt azonban nem lehet inicializálni.
a következő általános tömböt deklarál.,
Generikus módszerek
a visszatérési típus vagy paraméterek típusparamétereivel deklarált módszert Generikus módszernek nevezzük.
fent a AddorUpdate()
és a GetData()
módszerek Generikus módszerek. A item
paraméter tényleges adattípusa aDataStore<T>
osztály példányosításakor kerül meghatározásra, az alábbiak szerint.,
a generikus paramétertípus több paraméterrel használható, nem Generikus paraméterekkel vagy anélkül, valamint visszatérési típussal. Az alábbiak érvényes általános módszer túlterhelés.
egy nem generikus osztály tartalmazhat Generikus módszereket úgy, hogy egy típusparamétert szögletes zárójelben határoz meg a módszer nevével, az alábbiak szerint.
A generikumok előnyei
- a generikumok növelik a kód újrafelhasználhatóságát. Nem kell kódot írni a különböző adattípusok kezeléséhez.
- a generikumok típusbiztonságosak., Fordítási időhibákat kap, ha más adattípust próbál használni, mint a definícióban megadott.
- a Genericnek azért van teljesítményelőnye, mert eltávolítja a boksz és a boksz lehetőségét.