South_Bridge Skrevet 14. september 2010 Del Skrevet 14. september 2010 Si jeg har en delegate: public delegate String myMethodDelegate(int myInt); og da funksjonene jeg ønsker å knytte til denne: public String myStringMethod ( int myInt ) { if ( myInt > 0 ) return( "positive" ); if ( myInt < 0 ) return( "negative" ); return ( "zero" ); } public static String mySignMethod ( int myInt ) { if ( myInt > 0 ) return( "+" ); if ( myInt < 0 ) return( "-" ); return ( "" ); } Så skjønner jeg bruken, men en skal dra det over til et prosjekt jeg holder på med, feks et romskipspill i XNA... hvor kommer den pratiske nytten? Si jeg har en hastighets delegate, 2 funksjoner med lik signatur. Nr 1 returnerer fart i m/s og den andre returnerer far som i "+" (for fremover) og "-" (for bakover). Hvorfor alt dette maset da jeg bare kunne ha lagd 2 funksjoner GetSpeed og GetSpeedDirection (for eksempel)... hvor kommer den høyere meningen med delegate inn? Lenke til kommentar
BlueEAGLE Skrevet 14. september 2010 Del Skrevet 14. september 2010 Er http://en.wikibooks.org/wiki/C_Sharp_Programming/Delegates_and_Events noe som gir svar på det du spør om? 1 Lenke til kommentar
GeirGrusom Skrevet 14. september 2010 Del Skrevet 14. september 2010 Delegates kan erstattes run-time. Hvis du bruker events, kan du også tilegne flere delegates som fyres av samtidig. Ved siden av dette, kan også delegates brukes som callback funksjoner til unmanaged funksjoner (som EnumWindows e.l.) I tillegg kan delegates definere anonyme funksjoner og closures. 1 Lenke til kommentar
OleM80 Skrevet 16. september 2010 Del Skrevet 16. september 2010 Bruker dette i flere sammenhenger for å lage "løse" koblinger. F.eks. dersom jeg i et GUI trigger en datalasting. Så kobler jeg en "oppdater progress metode" med en delegate som kan oppdatere progress på dataopplastningen. GUI kjenner ikke til DB laget og omvendt men business logikk kobler en metode i GUI mot selve provider metoden i db via en delegate slik at db laget an oppdatere en progress bar uten å selv å kjenne til GUI laget. Bruker tilsvarende logikk mange plasser for å bygge minst mulig bindinger mellom lag og komponenter. Vet ikke helt hva du mente med den høyere mening? men dette er nå ihvertfall et bruksområde som jeg bruker det til ofte... 1 Lenke til kommentar
South_Bridge Skrevet 16. september 2010 Forfatter Del Skrevet 16. september 2010 Bruker dette i flere sammenhenger for å lage "løse" koblinger. F.eks. dersom jeg i et GUI trigger en datalasting. Så kobler jeg en "oppdater progress metode" med en delegate som kan oppdatere progress på dataopplastningen. GUI kjenner ikke til DB laget og omvendt men business logikk kobler en metode i GUI mot selve provider metoden i db via en delegate slik at db laget an oppdatere en progress bar uten å selv å kjenne til GUI laget. Bruker tilsvarende logikk mange plasser for å bygge minst mulig bindinger mellom lag og komponenter. Vet ikke helt hva du mente med den høyere mening? men dette er nå ihvertfall et bruksområde som jeg bruker det til ofte... Logikken ser ut til å stemme, høyere mening funnet Lenke til kommentar
MailMan13 Skrevet 16. september 2010 Del Skrevet 16. september 2010 (endret) Relaterte emner for "høyere mening": Brukes for å oppnå Inversion of Control (hvem er avhengig av hvem...) Som igjen ofte brukes sammen med Dependency Injection for best effekt. Gjerne med en IoC container Konstituerer også D'en i SOLID Endret 16. september 2010 av MailMan13 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå