To add to the excellent replies here, I'd like to emphasize that Events are not Fields, and a Delegate is a Field. The += and -= operators are not forms of "assignment," but are methods that bind a name (the invocation name) ... or remove a bound-name and its associated method ... to a supplied method which is then stored in a specific "slot" in the Event's queue of invocation methods (multi-cast delegate list).
I find Jon Skeet's explanation of this very illuminating: [
^]. If you can get the 3rd. edition of "C# in Depth" by Jon Skeet (Manning Press), the chapter on Delegates and Events, imho, is "worth its weight in gold:"
... p. 36
"Developers often confuse events and delegate instances, or events and fields declared with delegate types. The difference is important: events aren’t fields. The reason for the confusion is that C# provides a shorthand in the form of field-like events.
... p. 37
Field-like events make the implementation of all of this much simpler to look at—a single declaration and you’re done. The compiler turns the declaration into both an event with default add/remove implementations and a private field of the same type. Code inside the class sees the field; code outside the class only sees the event. This makes it look as if you can invoke an event, but what you actually do to call the event handlers is invoke the delegate instance stored in the field."
J. Skeet, "C# in Depth, 3rd. Edition, Section 2.13, p. 36~37.