Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 17614|Odpoveď: 1

[Komunikácia] Generické príklady v C# sú podrobne vysvetlené

[Kopírovať odkaz]
Zverejnené 28. 1. 2019 16:03:40 | | | |
1. Čo je generické?

Generiky sú nová syntax zavedená v C# 2.0, nie syntax sugar, ale funkcie poskytované rozšíreniami frameworku vo verzii 2.0.

Keď programujeme programy, často sa stretávame s modulmi s veľmi podobnými funkciami, ale spracovávajú rôzne dáta. Ale nemáme inú možnosť, než napísať viacero metód samostatne na spracovanie rôznych dátových typov. V tejto chvíli je otázka, či existuje spôsob, ako použiť tú istú metódu na riešenie rôznych typov parametrov? Vznik generík je špeciálne navrhnutý na riešenie tohto problému.

2. Prečo používať generiká

Pozrime sa na nasledujúci príklad:
Výsledok:

Z vyššie uvedených výsledkov vidíme, že tieto tri metódy majú rovnaké funkcie okrem rozdielnych parametrov, ktoré prechádzajú. V čase verzie 1.0 neexistoval koncept generík, tak čo robiť. Verím, že mnohí ľudia si budú myslieť na dedičstvo jednej z troch hlavných vlastností OOP, vieme, že v C# je objekt základnou triedou všetkých typov a vyššie uvedený kód je optimalizovaný nasledovne:
Výsledok:

Z vyššie uvedených výsledkov vidíme, že použitie typu objektu spĺňa naše požiadavky a rieši znovupoužiteľnosť kódu. Niektorí ľudia sa môžu pýtať, prečo je možné odovzdať int, reťazec a podobne, keď je definovaný ako typ objektu? Existujú dva dôvody:

1. Typ objektu je rodičovská trieda všetkých typov.

2. Prostredníctvom dedičnosti majú podtriedy všetky atribúty a správanie rodičovskej triedy a kdekoľvek sa rodičovská trieda objaví, môže byť nahradená podtriedami.

Vyššie uvedená metóda typu objektu však prináša ďalší problém: boxovanie a rozbaľovanie môžu znížiť výkon programu.

Microsoft zaviedol generiká v C# 2.0, ktoré dokážu veľmi dobre vyriešiť vyššie uvedené problémy.

3. Všeobecné typové parametre

V definícii generického typu alebo metódy je parameter typu zástupný parameter určený klientom pre konkrétny typ, keď inštancifikuje premennú tohto typu. Generická trieda (GenericList<T>) nemôže byť použitá tak, ako je, pretože nie je pravým typom; Je to skôr plán pre typy. Na použitie GenericList <T>musí klientský kód deklarovať a inštancovať typ konštruktu špecifikovaním parametra typu v zátvorkách. Typový argument pre túto konkrétnu triedu môže byť akýkoľvek typ, ktorý kompilátor rozpozná. Môžete vytvoriť ľubovoľný počet inštancií typov konštruktov, pričom každá má iný typový parametr.

Kód v uvedenom príklade je možné upraviť nasledovne:
Výzva:
Zobraziť výsledky:






Predchádzajúci:Poskytovatelia súborov .NET Core
Budúci:Dotaz na názov databázy MySQL, názov tabuľky a názov poľa
Zverejnené 29. 1. 2019 4:08:13 |
Veľmi dobré, dôkladné a základné veci by sa mali viac preštudovať
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com