static void CarEventLambda() { CarEvent c1 = new CarEvent("SlugBug", 100, 10); c1.AboutToBlow += (sender, e) => { Console.WriteLine(e.msg); }; c1.Exploded += (sender, e) => { Console.WriteLine(e.msg); }; for (int i = 0; i < 6; i++) { c1.Accelerate(20); } }
static void ExampleEvent() { CarEvent c1 = new CarEvent("SlugBug", 100, 10); //c1.AboutToBlow += new CarEvent.CarEngineHandler(CarIsAlmostDoomed); //c1.AboutToBlow += new CarEvent.CarEngineHandler(CarAboutToBlow); //упрощенная запись c1.AboutToBlow += CarAboutToBlow; //CarEvent.CarEngineHandler d = new CarEvent.CarEngineHandler(CarExploded); //c1.Exploded += d; for (int i = 0; i < 6; i++) { c1.Accelerate(20); } //c1.Exploded -= d; for (int i = 0; i < 6; i++) { c1.Accelerate(20); } }
static void AnonymusMethodExample() { CarEvent c1 = new CarEvent("SlugBug", 100, 10); c1.AboutToBlow += delegate { Console.WriteLine("Eek! Going to fast"); }; c1.AboutToBlow += delegate(object sender, CarEventArgs e){ Console.WriteLine("Mesage from Car {0}", e.msg); }; c1.Exploded += delegate(object sender, CarEventArgs e){ Console.WriteLine("Fatal Message from car: {0}", e.msg); }; for (int i = 0; i < 6; i++) { c1.Accelerate(20); } }
static void AnonymousLocal() { int aboutToBlowCounter = 0; CarEvent c1 = new CarEvent("SlugBug", 100, 10); c1.AboutToBlow += delegate { aboutToBlowCounter++; Console.WriteLine("Eek! Going too fast!"); }; c1.AboutToBlow += delegate(object sender, CarEventArgs e) { aboutToBlowCounter++; Console.WriteLine("critical message from car: {0}", e.msg); }; for (int i = 0; i < 6; i++) { c1.Accelerate(20); } Console.WriteLine("aboutToBlow event was fired {0} times", aboutToBlowCounter); }