tags:

views:

110

answers:

4
public void Bar()
{
    Foo foo = new Foo();
    **foo.MyEvent += foo_MyEvent;**
    foo.FireEvent();        
}

void foo_MyEvent(object sender, EventArgs e)
{
    ((Foo)sender).MyEvent -= foo_MyEvent;
}

Hey I'm a bit unfamiliar with events, could someone tell me what the += operator does with events?

+13  A: 

+= subscribes to an event. The delegate or method on the right-hand side of the += will be added to an internal list that the event keeps track of, and when the owning class fires that event, all the delegates in the list will be called.

mquander
and `-=` unsubscribes
Chad
A: 

It add's handler to an event. It means that mehtod on the right side of the operator will be invoked when the event will be rised.

ŁukaszW.pl
A: 

In this case method foo_MyEvent will fire whene that event is called (so you subscribe to the event in line 4)

Florim Maxhuni
+7  A: 

The answer you have accepted is a nice simplified version of what += does, but it's not the full story.

The += operator calls the add method on the event. Similarly -= calls remove. This usually results in the delegate being added to the internal list of handlers which are called when the event is fired, but not always.

It is perfectly possible to define add to do something else. This example may help to demonstrate what happens when you call +=:

class Test
{
    public event EventHandler MyEvent
    {
        add
        {
            Console.WriteLine("add operation");
        }

        remove
        {
            Console.WriteLine("remove operation");
        }
    }       

    static void Main()
    {
        Test t = new Test();

        t.MyEvent += new EventHandler (t.DoNothing);
        t.MyEvent -= null;
    }

    void DoNothing (object sender, EventArgs e)
    {
    }
} 

Output:

add operation
remove operation

See Jon Skeet's article on events and delegates for more information.

Mark Byers
This is accurate. My answer should reflect the behavior of all the events that you'll find on framework classes, but may not be what happens if you subscribe to someone else's event.
mquander