Gå til innhold

C#: Hva er den høyere mening med delegate?


Anbefalte innlegg

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
Videoannonse
Annonse

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...

  • Liker 1
Lenke til kommentar

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 :D

Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...