Hi All,
I would like to know the differences between Delegates and Events in C#.Net.
Both are same or both are diffenent. Which one is preferred?

Thanks and with regards,

11 Years
Discussion Span
Last Post by elninoisback

They aren't the same. An event is an event. A "delegate" assigns a particular event handler to an object instance. Thus, when an object event happens, the proper procedure/method is called.

An example might help. I frequently code things so that a single method is called for all instances of a class. No matter which button is clicked, call my generic "button_click" method. That method will use the event arguments to determine which button was actually clicked.

In order to assign all button click events to a single method, I have to code the delegates.


Event is Arraylist of delegates .
Delegate (as its English meaning) Secretary or someone who connect two persons throuh him .
Delegate can fire only one method
But Event fire more than one delegate , each call one method

Example : in Windows App. or ASP.NET App.
Button : is a class that has internally an event called ( eg. click ) and there is
a method you want to do if this button clicked so make an instance of the delegate
which button.click deal with ( System.EventHandler ) and make this delegate
execute the method eg. Button1_Click

Code :

in initializer of The Form Class :
Button1.Click += new System.EventHandler(this.button1_Click) ;
And make amethod :
private void button1_Click(object sender, System.EventArgs e)
// write your own code

Edited by happygeek: fixed formatting


Thanks a for kind information.
I know the exact difference.

Once Again a lot to all.


Event is a C# Modifier.
Delegate is a C# type.

delegate is a type that references a method.

Event is a Modifier used to declare a special kind of multicast delegate that can only be invoked from within the class or struct where it is declared (the publisher class).

Events enable a class or object to notify other classes or objects when something of interest occurs. The class that sends (or raises) the event is called the publisher and the classes that receive (or handle) the event are called subscribers.


Whilst that was definitely a very well worded response (kudos).
This thread has been dead for almost 5 years, i'm not sure the OP is still waiting ;)

Edited by Geekitygeek: n/a


All these theoritical differenes are OK. I want to know what is the difference in use. Why cannot we use multicast delegate to invoke more then one method rather then event.


you can use a multicast delegate instead of an event. but the main reason for using an event is that it prevents the invoking ability from its subscribers. basically events promote encapsulation over multicast delegates.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.