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

Pohľad: 20054|Odpoveď: 0

[Zdroj] Rýchlo pochopiť pokročilé koncepty v C# (1) Delegovať delegovanie

[Kopírovať odkaz]
Zverejnené 19. 1. 2017 15:18:00 | | | |
Dlhodobo sa venujem vývoju .NET a nedávno som recenzoval knihu "C# Advanced Programming". Zistil som, že mnohé problémy, ktorým som kedysi rozumel, ale nerozumel som, sa dajú vlastne pomaly študovať a chápať.

Takže plánujem začať písať blogový príspevok o "C# Advanced Programming Series". Bude čerpať z konceptu knihy "C# Advanced Programming" a tiež odkazovať na blogové príspevky iných odborníkov, dúfam, že rozumiete. Ak je niečo zle, prosím, opravte to.

(Tiež: Tento blogový príspevok nevysvetľuje základy definícií a gramatiky.) )



Poďme sa porozprávať o zaradení do služby.

Delegate sa široko používa v .NET. Budú zapojené lambda výrazy, podujatia, metódy anonymity a podobne (sledujte ďalšie blogové príspevky).

Čo teda znamená zverenie?

Laicky povedané, delegáti sa nelíšia od špecifikujúcich metód, okrem toho, že musia špecifikovať kľúčové slovo delegáta a nemajú žiadnu entitu metódy. Môžete si to predstaviť ako dočasný kód, napríklad keď píšete kód bez toho, aby ste vedeli, s čím budete pracovať. Stačí vedieť, aký parameter a výstupný typ zavádzate, a definovať ho. Toto je spôsob, ktorý kniha uvádza, že podpis musí znamenať to isté.

Definujme základnú delegáciu:





Výsledky realizácie:
Vidíte vyššie uvedené praktické miesto na zverenie? KonkrétneDelegát môže vykonať akúkoľvek metódu s rovnakým typom parametra príjmu a typom návratu, alebo dokonca frontu metód s rovnakým podpisom.

Takže musia byť naše podpisy metód (t.j. importné a výstupné parametre) naozaj úplne rovnaké ako u delegáta? Odpoveď: Nie, nemôžeme ignorovať kovarianciu a inverznú variáciu.
Stručne si predstavme poznanie kovariantu a invertora.

"Kovariancia" znamená schopnosť použiť typ, ktorý je viac odvodený než pôvodne špecifikovaný odvodený typ.
"Menič" označuje schopnosť použiť typ s menším stupňom odvodenia.
Potom je naša komisia tiež podlieha kovariancii a inverznej hodnote.

To znamená, že ak je definovaný delegát, nielenže presne tá istá metóda podpisu môže priradiť hodnotu delegátnej premennej.
Ak tabuľka parametrov metódy zodpovedá deklarácii delegáta, ale vracia odvodenú triedu (deklarácia delegátu vracia typ), potom metóda môže byť tiež priradená k tejto delegátnej premennej.
Ak typ návratu metódy zodpovedá deklarácii delegáta, ale argument je triedou predka typu parametra deklarácie delegáta, potom môže byť metóda tiež priradená k premennej delegáta.
Ak parametre a typ návratu metódy zodpovedajú predpokladom v uvedených dvoch riadkoch, metóda môže byť tiež priradená k delegátnej premennej.

Nasleduje jednoduchý príklad kovariantného verzus meniča:

Kovariancia:

Menič:







Predchádzajúci:MFC dizajn
Budúci:Ako zistiť, ktorý procesný PID súbor obsadí
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