I am new to events and I am trying to see how an event works and what purpose they would have. The code below is some code that a friend helped me with that we found on the net. It works but I am not certain as to how the event is used.
In the Main method there is the EventTest which creates a new object e which then intern calls SetValue method twice with a different parameter.
static void Main(string[] args)
{
    EventTest e = new EventTest(5);
    e.SetValue(7);
    e.SetValue(11);
    Console.ReadKey();
}
The following code is actually the event code.The OnNumChanged is the event that writes information if the number is changed. So when SetValue(100) is set to a different number then the event is fired.
Question: When the SetValue is set with a new value this is what cause the event to change correct?
I am just new enough to the event change that I could really use some good examples or have someone really explain this example line by line.
e.SetValue(7);
e.SetValue(11);
protected virtual void OnNumChanged()
{
     if (ChangeNum != null)
     {
          ChangeNum();
     }
     else
     {
          Console.WriteLine("Event fired!");
     }
}
Code:
class Program
{
    static void Main(string[] args)
    {
        EventTest e = new EventTest(5);
        e.SetValue(7);
        e.SetValue(11);
        Console.ReadKey();
    }
}
public class EventTest
{
    private int          value;
    public delegate void NumManipulationHandler();
    public event         NumManipulationHandler ChangeNum;
    public EventTest(int n)
    {
        SetValue(n);
    }
    public void SetValue(int n)
    {
        if (value != n)
        {
            value = n;
            OnNumChanged();
        }
    }
    protected virtual void OnNumChanged()
    {
        if (ChangeNum != null)
        {
            ChangeNum();
        }
        else
        {
            Console.WriteLine("Event fired!");
        }
    }
}
 
    