Avatar billede svylbowe Nybegynder
28. april 2005 - 17:02 Der er 11 kommentarer og
1 løsning

simpelt spørgsmål ang delegates

Hej,
jeg fatter ikke, hvorfor denne multicast delegate (minDel3) ikke formidler metodekaldet videre til både MinFunk1 og MinFunk2. Jeg adderer de to første delegates for at få en multicast delegate, men det virker ikke. Den kalder kun MinFunk2. Hvorfor?

using System;
namespace HelloWorld
{
    class HelloWorld
    {
        [STAThread]
        static void Main(string[] args)
        {
            MinDelegate minDel1 = new MinDelegate( MinFunk1 );
            MinDelegate minDel2 = new MinDelegate( MinFunk2 );
           
            MinDelegate minDel3 = minDel1 + minDel2;

            Console.WriteLine( minDel3(3) );
        }

        public delegate string MinDelegate(int i);

        public static string MinFunk1(int i)
        {
            return "MinFunk1: "+i;
        }

        public static string MinFunk2(int i)
        {
            return "MinFunk2: "+i;
        }
    }
}
Avatar billede ranglen Nybegynder
28. april 2005 - 17:23 #1
Den kalder begge funktioner. Men return-værdien fra den første funktion går tabt
Avatar billede nielle Nybegynder
28. april 2005 - 18:14 #2
"minDel3 = minDel1 + minDel2;" betyder at output for de to delegates bliver lagt sammen, men derimod at de begge to bliver kaldt når du kalder minDel3. Da rækkefølgen de kaldes i er 1) minDel1 og derefter 2) minDel2 så er det ouput fra minDel2 som du ender med (hvorimod output fra minDel1 - som ranglen fortæller - forsvinder).
Avatar billede nielle Nybegynder
28. april 2005 - 18:19 #3
Fremgår tydeligt af følgende variation på dit eksempel:

using System;
namespace HelloWorld
{
    class HelloWorld
    {
        [STAThread]
        static void Main(string[] args)
        {
            MinDelegate minDel1 = new MinDelegate( MinFunk1 );
            MinDelegate minDel2 = new MinDelegate( MinFunk2 );
           
            MinDelegate minDel3 = minDel1 + minDel2;

            minDel3(3);
        }

        public delegate void MinDelegate(int i);

        public static void MinFunk1(int i)
        {
            Console.WriteLine("MinFunk1: " + i);
        }

        public static void MinFunk2(int i)
        {
            Console.WriteLine("MinFunk2: " + i);
        }
    }
}
Avatar billede svylbowe Nybegynder
28. april 2005 - 23:09 #4
tak, skal I have. Hvis I opretter et svar, så kan I få de point, jeg har udloddet.
Avatar billede nielle Nybegynder
28. april 2005 - 23:13 #5
Ingen point til mig - ranglen var jo trods alt først. :^)
Avatar billede nielle Nybegynder
02. maj 2005 - 21:01 #6
ranglen?
Avatar billede nielle Nybegynder
09. maj 2005 - 10:09 #7
Hvis ranglen ikke vil svare (eller h(a/u)n nyder måske bare en velfortjent ferie) så lægger jeg da gerne et svar... :^|
Avatar billede nielle Nybegynder
17. maj 2005 - 14:52 #8
Lukketid?
Avatar billede svylbowe Nybegynder
17. maj 2005 - 15:07 #9
tak
Avatar billede svylbowe Nybegynder
17. maj 2005 - 15:08 #10
jeg kan sgu' ikke finde ud af at tildele dig point'ene??
Avatar billede nielle Nybegynder
17. maj 2005 - 17:18 #11
Du skal først markere mit nick før du trykker på Accept knappen.
Avatar billede nielle Nybegynder
17. maj 2005 - 21:34 #12
Takker :^)

ranglen> Hvis du gerne vil have nogle af de dejlige points, så dropper du bare en besked om der her og så finder vi hurtigt ud af det. :^)
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