static void Main(string[] args) { //DelegateStringVoid a = new DelegateStringVoid(M1); DelegateStringVoid a = M1; //a.AddMethod(GemIFil); a += GemIFil; //a.Invoke("*"); if (a != null) { a("*"); } return; // Direkte M1("*"); // Inddirekte a.Invoke("*"); DelegateVoid b = new DelegateVoid(Console.Beep); Console.Beep(); b.Invoke(); DelegateIntIntInt c = new DelegateIntIntInt(Plus); Console.WriteLine(Plus(10, 10)); Console.WriteLine(c.Invoke(10, 10)); }
delegate void DelegateStringVoid(string txt); // definering af en delegeate, som har en masse metoder på som ligger på klassen // en masse referencer til klassen static void Main(string[] args) { Test("Hello world"); // Nu vil jeg gerne have en instans af sådan en klasse DelegateStringVoid a = new DelegateStringVoid(Test); // man skal have en reference til en funktion, derfor skriver man lig med new Delegate1(); // Nu har vi et objekt a som indeholder reference til en masse metoder // a peger på et objekt der peger/har en reference på en liste af metoder // Her kalder vi den indirekte så vi får samme resultat a.Invoke("Hello world"); }
static void Gem(string a, DelegateStringVoid f) { // gemmer f.Invoke("Færdig med at gemme a " + a); }