See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 20054|Vastuse: 0

[Allikas] Mõista kiiresti C# Advanced Concepts (1) Delegeerijate delegeerimine

[Kopeeri link]
Postitatud 19.01.2017 15:18:00 | | | |
Olen kaua tegelenud .NET arendusega ja hiljuti arvustasin raamatut "C# Advanced Programming". Leidsin, et paljud probleemid, mida ma varem tundsin mõistvat, kuid ei mõistnud, saab tegelikult aeglaselt uurida ja mõista.

Seega plaanin hakata kirjutama blogipostitust teemal "C# Advanced Programming Series". See tugineb raamatu "C# Advanced Programming" kontseptsioonile ning viitab ka teiste ekspertide blogipostitustele, loodan, et mõistate. Kui midagi on valesti, palun parandage see.

(Samuti: See blogipostitus ei selgita definitsioonide ja grammatika põhialuseid.) )



Räägime komisjonistamisest.

Delegate on laialdaselt kasutusel .NET-is. Lambda väljendid, sündmused, anonüümsuse meetodid jms on kaasatud (jälgige järgmisi blogipostitusi).

Mis siis on usaldamine?

Lihtsas keeles ei erine delegaadid meetodite määramisest, välja arvatud see, et nad peavad määrama delegeeritud märksõna ja neil puudub meetodi üksus. Võid mõelda sellele kui ajutise lahendusena, näiteks kui kirjutad koodi teadmata, millega tegeled. Sa pead lihtsalt teadma, millised on parameetri tüüp ja väljundtüüp, mida sa tutvustad, ning defineerima need. See on meetod, mida raamatus edasi antakse, et allkiri peab tähendama sama.

Määratleme põhilise delegeerimise:





Täitmise tulemused:
Kas näete ülaltoodud praktilist kohta usaldamiseks? NimeltDelegaat võib käivitada mis tahes meetodi, millel on sama vastuvõtuparameetri tüüp ja tagastustüüp, või isegi meetodijärjekorra sama allkirjaga.

Kas meie meetodi allkirjad (st impordi- ja väljundparameetrid) peavad tõesti olema täpselt samad kui delegaadil? Vastus: Ei, me ei saa ignoreerida kovariantsust ja pöörddispersiooni.
Tutvustame lühidalt teadmisi kovariantide ja inverterite kohta.

"Kovariantsus" tähendab võimet kasutada tüüpi, mis on rohkem tuletatud kui algselt määratud tuletatud tüüp.
"Inverter" viitab võimele kasutada tüüpi, mille tuletis on väiksem.
Siis on meie komisjon samuti allutatud kovariantsusele ja pöördele.

See tähendab, et kui delegaat on defineeritud, ei saa mitte ainult täpselt sama allkirjameetod määrata delegaadi muutujale väärtust.
Kui meetodi parameetritabel vastab delegaadi deklaratsioonile, kuid tagastab tuletatud klassi (delegaadi deklaratsioon tagastab tüübi), siis võib meetodile määrata ka selle delegaadi muutuja.
Kui meetodi tagastamise tüüp vastab delegaadi deklaratsioonile, kuid argument on delegaadi deklaratsiooni parameetri tüübi eelkäijaklass, siis võib meetodi määrata ka delegaadi muutujale.
Kui meetodi parameetrid ja tagastustüüp vastavad ülaltoodud kahe rea eeldustele, saab meetodile määrata ka delegeeritud muutuja.

Järgnevalt on lihtne näide kovariantide ja inverterite vahel:

Kovariantsus:

Inverter:







Eelmine:MFC disain
Järgmine:Kuidas teada saada, millise protsessi PID-i kaudu fail hõivatud
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com