public static void Main()
Console.WriteLine("Hello World");
Car c1 = new Car("Slugbug", 100, 10);
c1.RegisterWithCarEngine(new Car.CarEngineHandler(
Console.WriteLine("Speeding up");
for (int i = 0; i < 6; i++)
static void OnCarEngineEvent(string msg)
Console.WriteLine("\n Message From Car Object");
Console.WriteLine("=> {0}", msg);
public delegate void CarEngineHandler(string msgForCaller);
private CarEngineHandler _listOfHandlers;
public void RegisterWithCarEngine(CarEngineHandler methodToCall)
_listOfHandlers = methodToCall;
public int CurrentSpeed {get; set;}
public int MaxSpeed {get; set;} = 100;
public string PetName {get; set;}
public Car(string name, int maxSp, int currSp)
public void Accelerate(int delta)
_listOfHandlers?.Invoke("Sorry, this car is dead");
if (10 == (MaxSpeed - CurrentSpeed))
_listOfHandlers?.Invoke("Careful buddy! Gonnablow");
if (CurrentSpeed >= MaxSpeed)
Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);