Kas see on komisjonitasu? Delegaat on tüübikindel objekt, mis osutab teisele meetodile (või meetoditele) programmis, mida hiljem kutsutakse. Lihtsustatult öeldes on delegaat objekt, mis võib viidata meetodile, ja kui delegaat luuakse, loob ta objekti, mis viitab meetodile, ning siis saab metoodi kutsuda, st delegaat saab kutsuda viidatud meetodit.
Kuidas ma delegeerimist kasutan? 1. Määratle usaldamise tüüp
[ligipääsu modifikaator]delegaat tagastab tüübi delegaadi nime (parameetri);
2. Deklareeri usaldatud objekt
Delegaadi nimi Delegeeritud instantsi nimi;
3. Loo delegeerimise objekt (määra, millise meetodiga siduda)
delegeeri instantsi nimi=uus delegaadi nimi (teatud klassi meetod)
4. Kasuta usaldatud kõne meetodit
Delegeeritud instantsi nimi (parameeter)
Ettevaatusabinõud usaldamiseks:1. Delegeerimine ja meetod peavad omama samu parameetreid.
2、Delegaat võib kutsuda mitut meetodit, st delegaat võib pidada kutsutavate meetodite nimekirja ühe meetodi asemel, mida nimetatakse multicastiks (multicast)。
3、Rakenda meetodi suurendamist ja kahanemist += ja -= operatsioonide abil
Näide:
Kirjutamine:
1. Delegeeritud delegaadi nimi = uus delegaat (meetodi nimi, mida kutsutakse); Järjekorra nimi (parameeter);
2. Delegeeri delegaadi nimi = metoodi nimi, mida kutsutakse; Järjekorra nimi (parameeter);
3. Anonüümne meetod
delegeeri delegaadi nimi=delegaat(parameeter){metoodikeha, mis kutsutakse}; Järjekorra nimi (parameeter);
4. Lambda väljendus
Delegeeritud järjekorra nimi=((parameeter 1,。。 parameeter n)=>{metoodikeha, mida kutsutakse}); Järjekorra nimi (parameeter);
5. Kasuta Action <T>ja <T>Func, esimesel pole tagastusväärtust
func< parameeter 1, parameeter 2, tagastusväärtus> delegaadi nimi = ((parameeter 1, parameeter 2) => {meetodi keha tagastusväärtusega }); Tagastusväärtus = tellimuse nimi (parameeter 1, parameeter 2);
Kleebise kood:
|