|
|
Közzétéve 2019. 01. 28. 16:03:40
|
|
|
|

1. Mi az a generikus?
Az általános rendszerek az új szintaxis, amelyeket a C# 2.0-ban vezettek be, nem szintaxiscukor, hanem a 2.0-ban a keretrendszer fejlesztései által biztosított funkciók.
Amikor programokat programozunk, gyakran találkozunk modulokkal, amelyek nagyon hasonló funkciókkal rendelkeznek, de eltérő adatokat kezelnek. De nincs más választásunk, mint külön-külön több metódust írni különböző adattípusok kezelésére. Jelenleg az a kérdés, hogy van-e mód arra, hogy ugyanazt a módszert különböző paramétertípusok kezelésére használja? A generikusok megjelenése kifejezetten ennek a problémának a megoldására lett tervezve.
2. Miért használok generikus anyagokat
Nézzük meg a következő példát:
Eredmény:
A fenti eredményekből láthatjuk, hogy ez a három módszer ugyanazokat a függvényeket tartalmazza, kivéve a különböző paramétereket, amelyeket átmennek. A 1.0-s verzió idején még nem létezett generikek fogalma, szóval mit tegyen? Úgy hiszem, sokan gondolnak majd az OOP három fő jellemzőjének öröklésére, tudjuk, hogy a C#-ban az objektum az összes típus alaposztálya, és a fenti kód a következőképpen van optimalizálva:
Eredmény:
A fenti eredményekből láthatjuk, hogy az objektum típus használata megfelel a követelményeinknek, és megoldja a kód újrahasználhatóságát. Néhányan megkérdezhetik, miért lehet int, string stb. bejutni, amikor objektumtípusként van definiálva? Ennek két oka van:
1. Az objektumtípus minden típus szülőosztálya.
2. Az öröklődés révén az alosztályok rendelkeznek az összes attribútummal és viselkedéssel az anyaosztály számára, és ahol az anyaosztály megjelenik, az alosztályok helyettesíthetők.
De a fenti objektumtípus módszer egy másik problémát is vehet fel: a boxing és unboxing csökkentheti a program teljesítményét.
A Microsoft a C# 2.0-ban vezetett be generikeket, amelyek nagyon jól megoldják a fent említett problémákat.
3. Általános típusparaméterek
Egy általános típus vagy metódus definícióban a típusparaméter egy helykitöltő, amelyet az ügyfél egy adott típusra jelöl, amikor egy generikus típusú változót instanciál. Az általános osztály (GenericList<T>) nem használható úgy, ahogy van, mert nem valódi típus; Ez inkább egy típusterv. A GenericList használatához <T>a kliens kódnak be kell jelentenie és meginstanciálnia egy konstrukció típust szögzárójelen belüli típusparaméter megjelölésével. Ennek az osztálynak a típusérve bármilyen olyan típus lehet, amelyet a fordító felismer. Bármilyen számú konstrukció típusú példányt létrehozhatsz, mindegyiknek más típusparamétere van.
A fenti példában szereplő kód a következőképpen módosítható:
Hívás:
Eredmények megjelenítése:
|
Előző:.NET Core FájlszolgáltatókKövetkező:MySQL adatbázis név, tábla és mezőnév lekérdezés
|