Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 20054|Válasz: 0

[Forrás] Gyorsan megértsük a C# Fejlett fogalmakat (1) Delegált delegálás

[Linket másol]
Közzétéve 2017. 01. 19. 15:18:00 | | | |
Régóta dolgozom .NET fejlesztéssel, és nemrég értékeltem a "C# Advanced Programming" című könyvet. Azt tapasztaltam, hogy sok olyan problémát, amit korábban megértettem, de nem értettem, valójában lassan tanulmányozható és megérthető lehet.

Ezért tervezem, hogy elkezdek blogbejegyzést írni a "C# Advanced Programming Series"-ről. A "C# Advanced Programming" című könyv koncepciójára támaszkodni fog, és más szakértők blogbejegyzéseire is hivatkozni fog – remélem, megértitek. Ha valami nincs rendben, kérlek, javítsd ki.

(Továbbá: Ez a blogbejegyzés nem magyarázza el a definíciók és a nyelvtani alapjait.) )



Beszéljünk a hadviselésről.

A Delegate széles körben használatos a .NET-ben. Lambda kifejezések, események, anonimitási módszerek stb. is részt vesznek (maradjatok velünk a következő blogbejegyzésekért).

Mi is az a bízás?

Egyszerű értelemben a delegáltak nem különböznek a metódusok megjelölésétől, kivéve, hogy meg kell határozniuk a delegált kulcsszót, és nincs metódusentitásuk. Gondolhatsz rá úgy, mint egy helykitöltőre, például amikor kódot írsz anélkül, hogy tudnád, mivel fogsz foglalkozni. Csak tudni kell, hogy milyen paraméter- és kimenettípus lesz, és definiálnod ezt. Ez az a módszer, amely a könyvben közvetíti, hogy az aláírásnak ugyanazt kell jelentenie.

Definiáljunk egy alapvető delegációt:





Végrehajtási eredmények:
Látod a fent említett praktikus helyet, ahol a bízásban lehetsz bízni? NevezetesenEgy delegált bármilyen olyan metódust végrehajthat, amelynek ugyanaz a felvételi paraméter típusa és a visszatérési típusa, vagy akár egy metódussorba hasonló aláírással.

Tehát tényleg pontosan ugyanazoknak kell lenniük a metódus aláírásainknak (azaz import- és kimeneti paramétereknek) ugyanazoknak, mint a delegáltnak? Válasz: Nem, nem hagyhatjuk figyelmen kívül a kovarianciát és az inverz variációt.
Röviden mutassuk be a kovariáns és inverter ismereteit.

A "kovariancia" azt jelenti, hogy olyan típust használhatunk, amely inkább származott, mint az eredetileg meghatározott eredeti.
Az "inverter" azt jelenti, hogy egy kisebb származtatású típust lehet használni.
Ekkor a mi bizottságunk is kovariancia és inverz hatású.

Ez azt jelenti, hogy ha egy delegált definiálva van meg, nemcsak ugyanaz az aláírási módszer rendelhet értéket a delegált változóhoz.
Ha egy metódus paramétertáblázata megegyezik a delegált deklarációval, de egy származtatott osztályt ad vissza (a delegált deklaráció adja a típust), akkor a metódus is hozzárendelhető ehhez a delegált változóhoz.
Ha egy metódus visszaküldési típusa megegyezik a delegált deklarációjával, de az érv a delegált deklarációs paramétertípus elős osztálya, akkor a metódus is hozzárendelhető a delegált változóhoz.
Ha a metódus paraméterei és visszaküldési típusa megegyezik a fenti két sorban szereplő feltételezésekkel, akkor a metódus a delegált változóhoz is rendelhető.

Az alábbiakban egy egyszerű példa a kovariáns és inverter közötti különbségekre:

Kovariancia:

Inverter:







Előző:MFC tervezés
Következő:Hogyan tudhatjuk meg, melyik folyamatban van foglalva egy fájl a PID-jével
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com