12. juni 2006 - 16:50Der er
11 kommentarer og 2 løsninger
forskellige små spørgsmål
Det er korte spørgsmål jeg lige må have afklaret.
1. Denne syntax ser jeg tit, men forstår den ikke. {0} Det er ofte i Console.WriteLine kaldet, men hvad betyder det egentlig?
2. Den eneste forskel på Events og Delegates er det, at man ikke kan kalde Events fra andre klasser end hvor den er lavet? Det lyder i hvertfald sådan i den bog, som jeg læser.
3. Hvad betyder det når en klasse er sealed?
4. I c# kan man programmere asynkront via. Threads og delegates så i Java kan man kun gøre det via. Threads?
det er i orden, men måske ved du hvad der menes med, at delegates kun kan pege på instance metoder og static metoder? Det er instance metoder som jeg er usikker på. Mener de metoder, som ligger i et objekt som skal instancieres? altså det må ikke være null, som det godt kan være med static metoder?
re 2) En anden forskel er at events kan tilføjes til et interface - det kan en delegate ikke. Derudover har man mulighed for at overskrive Add() og Remove() metoderne på event, hvis man har de lyster.
Delegate er blot en pointer til en funktion som vi kender det fra c++. Event er blot kaldet til funktionen. Så du kan ikke sætte punkt to op på den måde da de to ting hænger sammen. Man oprettet et event ud fra en delegate.
Som segato siger er en Delegate en pointer og eventet er kaldet...
når du skriver: public delegate void MyDelegate(object sender, MyEventArgs args);
Så definere du bare signaturen for den/de metoder din givne delegate kan pege på. Denne signatur kan naturligvis være på mange måde, overstående er bare ret gennerelt for events, men kunne godt have været: public delegate void MyDelegate(int alder, string navn);
Osv... Når du så opretter dit event ud fra din delegate, følger signaturen self med
et event er i sagens natur faktisk bare en samling af delegates (pointers)... og når du så laver et kald med dit event, sørger den for at gå hele sin samling igennem og kalde de metoder, på det objecter som dens delegates peger på...
Ok blev vist lidt kringlet... men håber da det giver lidt mening...
"et event er i sagens natur faktisk bare en samling af delegates (pointers)..." Jeg vil tro, at det også er derfor man kalder et event for et multicast delegate.
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.