Avatar billede Droa Seniormester
08. marts 2010 - 17:36 Der er 9 kommentarer og
1 løsning

Hvad er fordelen med delegate?

Jeg har lavet en kode som kalder en funktion på 2 måder, igennem delegate, og direkte.. jeg kan ikke rigtigt se hvad fordelen med delegate er, men vil meget gerne lære det, er der nogen som har noget rigtigt dybtegående læsestof?


using System;

namespace Test2
{
    delegate void deltest(int x,int y);

    static public class AnotherClass
    {
        static public void test(int x, int y)
        {
            Console.WriteLine(x*y);
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Delegate");
            deltest dt = new deltest(AnotherClass.test);
            dt(5,5);
            dt(5, 2);
            dt(9, 5);
            dt(8, 5);

            Console.WriteLine("Class");
            AnotherClass.test(6,9);
            AnotherClass.test(2, 9);
            AnotherClass.test(6, 3);
        }
    }
}
Avatar billede ksoren Nybegynder
08. marts 2010 - 17:39 #1
En delegate kan ændres, og kan således pege på mange forskellige metoder undervejs i udviklingen.

Den bruges ofte som parameter i en metode.
Avatar billede arne_v Ekspert
08. marts 2010 - 17:40 #2
Delegate er en smart maade at sende noget funktionalitet ind i noget andet kode.

Forestil dig at du har et meget avanaceret udvaelgelses system, der tilfojer du saa et delegate argument, saa kan du kalde metoden med:
- en delegate som printer til Console>out
- en delegate som gemmer i database
etc.etc. efter behov.
Avatar billede ksoren Nybegynder
08. marts 2010 - 17:41 #3
hvis du skifter "udviklingen" ud med "afviklingen", så giver sætningen mere mening.
Avatar billede arne_v Ekspert
08. marts 2010 - 17:42 #4
Hvis du er C haj, saa

C# delegate = C function pointer
Avatar billede janus_007 Nybegynder
08. marts 2010 - 17:50 #5
Lad mig stille dig et par spørgsmål...

Lad os antage at metoden test i AnotherClass skulle bruges i en anden klasse, men du samtidigt ville gøre sådan at den "anden" klasse kun kunne bruge test, hvordan ville du så gøre? (forudsat at der var flere metoder i AnotherClass)

Lad os så også sige at den "anden" klasse skulle bruge flere forskellige metoder alt afhængig af tilstanden, men selve grundlaget stort set var den samme, tænk dig en calculator, hvor alt afhængig om der blev trykket plus eller minus stort set skulle ske det samme i klassen, men metoden til beregningen jo hhv. adderede eller substrahere, så kunne du bruge en lang if-then, men hvis nu ikke du måtte det (eller du måske bare fandt dette if-then pattern grimt), hvad så?
Avatar billede Droa Seniormester
08. marts 2010 - 17:57 #6
Jeg kan se jeres retning, og kan virkeligt se ideen nu.. jeg fandt os en meget god artikel om dynamiske delegates, det er virkeligt spændene må jeg sige.. mange tak for de mange gode svar, men må desværre give point til ksoren2, da i næsten siger det sammen, og at han kom først.. men rigtig mange tak igen for jeres gode svar
Avatar billede ksoren Nybegynder
08. marts 2010 - 18:35 #7
Svar-funktionen kan godt dele pointene mellem flere brugere. Så det synes jeg næsten du skal prøve :)
Avatar billede Droa Seniormester
16. marts 2010 - 17:21 #8
helt i orden, i svare bare alle :)
Avatar billede arne_v Ekspert
16. marts 2010 - 18:39 #9
fra mig
Avatar billede Droa Seniormester
24. marts 2010 - 12:26 #10
ikke flere svar? jeg gir lige 24 timer mere
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Sund & Bælt Holding A/S

IT Change & Release Manager

Netcompany A/S

IT Consultant

SporingsGruppen ApS

Frontend-udvikler

Politiets Efterretningstjeneste

Ambitiøs Enterprisearkitekt til PET