grubiai tariant delegatas leidzia metoda naudoti kaip reiksme, t.y. perduoti per parameterus i kita metoda, grazinti (return) is metodo ir t.t. delegatai yra type-safe, t.y. jie turi atitikti signatura metodo i kuri jie reprezentuos. Eventai yra tiesiog palengvinimas programuotojui, compileris tai pavercia combine/remove delegate operacijas. pvz is Jeffrey Richter "CLR via C#" knygos public event EventHandler<NewMailEventArgs> NewMail; When the C# compiler compiles the line above, it translates this single line of source code into the following three constructs: // 1. A PRIVATE delegate field that is initialized to null private EventHandler<NewMailEventArgs> NewMail = null; // 2. A PUBLIC add_Xxx method (where Xxx is the Event name) // Allows methods to register interest in the event. public void add_NewMail(EventHandler<NewMailEventArgs> value) { // The loop and the call to CompareExchange is all just a fancy way // of adding a delegate to the event in a thread-safe way EventHandler<NewMailEventArgs>prevHandler; EventHandler<NewMailEventArgs> newMail = this.NewMail; do { prevHandler = newMail; EventHandler<NewMailEventArgs>newHandler = (EventHandler<NewMailEventArgs>) Delegate.Combine(prevHandler, value); newMail = Interlocked.CompareExchange<EventHandler<NewMailEventArgs>>( ref this.NewMail, newHandler, prevHandler); } while (newMail != prevHandler); } // 3. A PUBLIC remove_Xxx method (where Xxx is the Event name) // Allows methods to unregister interest in the event. public void remove_NewMail(EventHandler<NewMailEventArgs> value) { // The loop and the call to CompareExchange is all just a fancy way // of removing a delegate from the event in a thread-safe way EventHandler<NewMailEventArgs> prevHandler; EventHandler<NewMailEventArgs> newMail = this.NewMail; do { prevHandler = newMail; EventHandler<NewMailEventArgs> newHandler = (EventHandler<NewMailEventArgs>) Delegate.Remove(prevHandler, value); newMail = Interlocked.CompareExchange<EventHandler<NewMailEventArgs>>( ref this.NewMail, newHandler, prevHandler); } while (newMail != prevHandler); } "Dziedukas" <dejau@gmail.com> wrote in message news:jumij5$qv8$1@trimpas.omnitel.net... > ECMA atsisiunciau - reikes paskaityti. O kuo tie eventai skiriasi nuo > metodo? Nes aprasant (deleguojant) nurodoma ir gautine reiksme (void, int, > ..). Cia gal kazkas panasaus i interfeisa?? Ta prasme, kad naudojamas kaip > sablonas?? Tik ar is jo galima ka isvesti tai nezinau. > "AndriusF" <MORESPAMandriusFL@gmail.com> wrote in message > news:julsna$4mv$1@trimpas.omnitel.net... >> Eventas yra klases narys,taip kaip metodas, property ar field`as. >> delegate yra tipas (nuoroda i metoda) >> Eventas gali buti tik deleagte tipo. >> >> Siulau pasiskaityti ECMA-334 skyrius 8.7.5 ir 17.7. >> >> An event is a member that enables an object or class to provide >> notifications. A class defines an event by >> providing an event declaration (which resembles a field declaration, >> though with an added event keyword) >> and an optional set of event accessors. The type of this declaration >> shall be a delegate type. >> >> a. >> >> >> "Dziedukas" <dejau@gmail.com> wrote in message >> news:julek0$l2f$1@trimpas.omnitel.net... >>> Sveiki, >>> >>> bandau toliau mokytis C# ir susiduriau su event'ais. Mokausi is anglisku >>> knygu ir kazkaip ar galva perkaito, ar kas pasidare, niekaip neikertu. >>> Gal kas galetumet paaiskint? >>> >>> Dekui >>> >> >> > >