|
|
Objavljeno na 19. 01. 2017 15:18:00
|
|
|
|

Že dolgo se ukvarjam z .NET razvojem in pred kratkim sem recenziral knjigo "C# Advanced Programming". Ugotovil sem, da je veliko problemov, ki sem jih nekoč razumel, a jih nisem razumel, mogoče počasi preučevati in razumeti.
Zato nameravam začeti pisati blog objavo o "C# Advanced Programming Series". Temeljila bo na konceptu knjige "C# Advanced Programming" in se bo sklicevala tudi na blog objave drugih strokovnjakov, upam, da razumete. Če je kaj narobe, to prosim popravite.
(Prav tako: Ta blog zapis ne bo razložil osnov definicij in slovnice.) )
Pogovorimo se o sprejemu v službo.
Delegate je široko uporabljen v .NET. Vključeni bodo lambda izrazi, dogodki, metode anonimnosti itd. (ostanite z nami za naslednje blog objave).
Kaj torej je zaupanje?
Preprosto povedano, delegati niso nič drugačni od določanja metod, razen da morajo določiti ključno besedo delegate in nimajo entitete metode. Lahko si to predstavljate kot začasno začasno kodo, na primer, ko pišete kodo, ne da bi vedeli, s čim se boste ukvarjali. Samo vedeti morate, kateri parameter in izhodni tip boste uvedli, ter ga definirati. To je način, ki ga knjiga predstavi, da mora podpis pomeniti enako.
Opredelimo osnovno delegacijo:
Rezultati izvedbe:
Ali vidite zgoraj praktično mesto za zaupanje? NatančnejeDelegat lahko izvede katerokoli metodo z enakim tipom parametra vnosa in tipom vrnitve ali celo vrsto metode z enakim podpisom.
Torej, ali morajo biti naši podpisi metod (tj. uvozni in izhodni parametri) res enaki kot delegat? Odgovor: Ne, kovariance in inverzne variacije ne moremo prezreti. Na kratko predstavimo znanje o kovariantu in inverterju.
"Kovarijanca" pomeni, da lahko uporabimo tip, ki je bolj izpeljan od prvotno določenega izpeljanega tipa. "Pretvornik" se nanaša na možnost uporabe tipa z manjšo stopnjo izpeljave. Nato je naša komisija prav tako podvržena kovarianci in inverzni vrednosti.
To pomeni, da če je delegat definiran, lahko ne samo ista metoda podpisa dodeli vrednost delegatski spremenljivki.
Če tabela parametrov metode ustreza deklaraciji delegata, vendar vrne izpeljani razred (deklaracija delegata vrne tip), je mogoče metodo prav tako dodeliti tej delegatski spremenljivki.
Če se tip vrnitve metode ujema z deklaracijo delegata, vendar je argument razred prednika tipa parametra deklaracije delegata, je mogoče metodo prav tako dodeliti spremenljivki delegata.
Če parametri in tip vrnitve metode ustrezajo predpostavkam iz zgornjih dveh vrstic, je mogoče metodo dodeliti tudi delegatski spremenljivki.
Spodaj je preprost primer kovariantnega v primerjavi z inverterjem:
Kovarianca:
Pretvornik:
|
Prejšnji:MFC zasnovaNaslednji:Kako ugotoviti, kateri procesni PID je datoteka zasedena
|