static void Main(string[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisc; // subscribe to an event moviePlayer.MovieFinished += handler; // unsubscribe // moviePlayer.MovieFinished -= handler; // will make it so we don't eject disk moviePlayer.MovieFinished += EjectDisc; moviePlayer.MovieFinished += () => { Console.WriteLine("handle event with block body lambda"); }; moviePlayer.MovieFinished += () => Console.WriteLine("expression body"); //Type is usually inferred from context so (string s) is unnecessary moviePlayer.DiscEjected += (string s) => Console.WriteLine($"Ejecting {s}"); moviePlayer.Play(); Console.ReadLine(); // will wait for me to press enter before exiting }
static void Main(String[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisc; //subscribe to an event moviePlayer.MovieFinished += handler; moviePlayer.MovieFinished += EjectDisc; //unsubscribe // moviePlayer.MovieFinished -= handler; moviePlayer.MovieFinished += () => { // can do anything inside a lambda Console.WriteLine("handle event with block body"); }; // with expression body, you can only put one line in moviePlayer.MovieFinished += () => Console.WriteLine("expression body"); // we can specify type on lamda function params // but usually they are inferred from context like var //moviePlayer.DiscEjected += (string s) => Console.WriteLine($"Ejecting {s}"); moviePlayer.DiscEjected += s => Console.WriteLine($"Ejecting {s}"); Console.WriteLine("Playing movie...."); moviePlayer.Play(); }
static void Main(string[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisc; // subscribe to an event moviePlayer.MovieFinished += handler; // unsubscribe to an event //moviePlayer.MovieFinished -= handler; moviePlayer.MovieFinished += EjectDisc; moviePlayer.MovieFinished += () => { Console.WriteLine("handle event with block-body lambda."); }; // with expression body, you can only put one line in moviePlayer.MovieFinished += () => Console.WriteLine("expression body"); moviePlayer.DiscEjected += s => Console.WriteLine($"Ejecting {s}"); Console.WriteLine("Playing movie..."); moviePlayer.Play(); Console.ReadLine(); }
static void Main(string[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisk; moviePlayer.MovieFinished += handler; moviePlayer.DiskEjected += (s) => Console.WriteLine($"Ejecting {s}"); FuncAndAction(); Console.WriteLine("Playing Movie.."); moviePlayer.Play(); Console.ReadLine(); }
static void Main(string[] args) { var movie = "Frozen"; var moviePlayer = new MoviePlayer { CurrentMovie = movie }; MoviePlayer.MovieFinishedHandler handler = PrintMovieOver; moviePlayer.MovieFinished += handler; moviePlayer.PlayMovie(); }
static void Main(string[] args) { var movie = "Frozen"; var moviePlayer = new MoviePlayer { CurrentMovie = movie }; // this implicit conversion works because themethod has the right shape. MoviePlayer.MovieFinishedHandler handler = PrintMovieOver; moviePlayer.MovieFinished += handler; MoviePlayer.PlayMovie(); }
static void Main(string[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisc; // subscribe to an event moviePlayer.MovieFinished += handler; // unsubscribe from an event //moviePlayer.MovieFinished -= handler; moviePlayer.MovieFinished += EjectDisc; moviePlayer.MovieFinished += () => { //for (int i = 0; i < length; i++) //{ //} //if () // if () Console.WriteLine("handle event with block-body lambda."); }; // with expression body, you can only put one line in moviePlayer.MovieFinished += () => Console.WriteLine("expression body"); // we can specify type on lambda function parameters... // but usually, they are inferred from context (like "var" does). //moviePlayer.DiscEjected += (string s) => Console.WriteLine($"Ejecting {s}"); moviePlayer.DiscEjected += s => Console.WriteLine($"Ejecting {s}"); FuncAndAction(); Console.WriteLine("Playing movie..."); moviePlayer.Play(); Console.ReadLine(); // wait for me to press enter before exiting }
static void Main(string[] args) { var movie = "Frozen"; var moviePlayer = new MoviePlayer { CurrentMovie = movie }; // this implicit conversion works because the method has the right shape. MoviePlayer.MovieFinishedHandler handler = PrintMovieOver; // referencing the method, not calling //moviePlayer.MovieFinished += handler; // subscribe with += //moviePlayer.MovieFinished -= handler; // unsubscribe with -= moviePlayer.MovieFinished += PrintWhichMovieOver; moviePlayer.PlayMovie(); }
static void Main(string[] args) { var moviePlayer = new MoviePlayer() { CurrentMovie = Movie.StarWars5 }; MoviePlayer.MovieFinishedHandler handler = EjectDisk; moviePlayer.MovieFinished += handler; Console.WriteLine("playing movie"); moviePlayer.Play(); moviePlayer.MovieFinished += () => { Console.WriteLine("Lambda expression"); }; }
public static void Main(string[] args) { var moviePlayer = new MoviePlayer { CurrentMovie = Movie.StarWars4 }; MoviePlayer.MovieFinishedHandler handler = EjectDisc; // subscribe to an event moviePlayer.MovieFinished += handler; // unsubscribe to an event // moviePlayer.MovieFinished -= handler; moviePlayer.MovieFinished += () => { Console.WriteLine("handle event with block-body lambda."); }; moviePlayer.MovieFinished += () => Console.WriteLine("Expression body"); //we can specify type on lambda funtion parameters // but usually they are inferred from context (like var does) moviePlayer.DiscEjected += s => Console.WriteLine($"Ejecting {s}"); FuncAndAction(); Console.WriteLine("Playing movie..."); moviePlayer.Play(); // wait for me to press enter before exiting Console.ReadLine(); }