This is from an example accompanying the agsXMPP .Net assembly. I've read up on delegates, but am not sure how that fits in with this line of code (which waits for the logon to occur, and then sends a message. I guess what I'm looking for is an understanding of why delegate(0)
accomplishes this, in the kind of simple terms I can understand.
xmpp.OnLogin += delegate(object o) {
xmpp.Send(new Message(new Jid(JID_RECEIVER),
MessageType.chat,
"Hello, how are you?"));
};
It's exactly the same as
Where MyMethod is
The
delegate(object o){..}
tells the compiler to package up whatever is inside the brackets as an object to be executed later, in this case whenOnLogin
is fired. Without thedelegate()
statement, the compiler would think you are tying to execute an action in the middle of an assignemnt statement and give you errors.As Abe noted, this code is creating an anonymous function. This:
would have been accomplished as follows in older versions of .Net (I've excluded class declarations and such, and just kept the essential elements):
What you're doing in either case is associating a method of yours to run when the xmpp OnLogin event is fired.