Con esa sintaxis estás creando una expresión lambda anónima.
En tu caso, se está creando una función anónima que recibe dos parámetros. Los tipos de los parámetros se infieren automáticamente al asignar la función anónima al evento Loaded o Unloaded. En el caso particular, s es de tipo object y e es de tipo EventsArgs.
Todas estas sentencias son equivalentes:
Código C#:
Ver original//Con delegado anónimo
this.Loaded += new EventHandler(delegate(object s, EventArgs e) { DiscoverKinectSensor(); });
//Con delegado anónimo (forma corta)
this.Loaded += delegate(object s, EventArgs e) { DiscoverKinectSensor(); };
//Lambda con parámetros explícitos
this.Loaded += (object s, EventArgs e) => { DiscoverKinectSensor(); }
//Pasando una función
this.Loaded += new EventHandler(example);
private void example(object s, EventArgs e) {
DiscoverKinectSensor();
}
Espero que te haya servido y saludos