Ti consiglio di fare un programma di prova per mettere in pratica quello che c'è scritto su msdn.

Ne ho fatto uno banalissimo, cercando di seguire la forma presentata negli esempi:

Main.css
codice:
using System;

namespace Tests
{
	class MainClass
	{
		public static void Main(string[] args)
		{
			MainClass mc = new MainClass();
			Console.WriteLine("Hello World!");
			
			Persona p = new Persona(10);
			p.CrescitaPersona += new Persona.CrescitaPersonaGestore(mc.InRispostaAllaCrescita);
			Console.WriteLine("La persona creata ha {0} anni", p.Eta);
			p.CresciUnAnno();
			
		}
				
		public void InRispostaAllaCrescita(object sender, PersonaEventArgs pea){
				Console.WriteLine("{GESTORE EVENTO} >>> " + pea.Text);
		}
	}
}
Persona.cs
codice:
using System;

namespace Tests
{
	
	public class PersonaEventArgs{
		public string Text{
			get;set;
		}
		public PersonaEventArgs(string s){
			Text = s;
		}
	}	
	
	public class Persona
	{
		public int Eta{ get; set; }
		
		public delegate void CrescitaPersonaGestore(object sender, PersonaEventArgs pea);
		public event CrescitaPersonaGestore CrescitaPersona;
		
		public Persona(int etaIniziale)
		{
			Eta = etaIniziale;
		}
		
		public void CresciUnAnno(){
			Eta++;
			RaiseEvent();
		}
		
		public void RaiseEvent(){
			CrescitaPersona(
			                this,
			                new PersonaEventArgs("La persona è cresciuta. Ora ha " + Eta + " anni")
			                );
		}
		
	}
	
}
Ho testato in MonoDevelop.

Ciao