예제 #1
0
        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
        }
예제 #2
0
        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();
        }
예제 #3
0
        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();
        }
예제 #4
0
        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();
        }
예제 #5
0
        static void Main(string[] args)
        {
            var movie = "Frozen";

            var moviePlayer = new MoviePlayer {
                CurrentMovie = movie
            };

            MoviePlayer.MovieFinishedHandler handler = PrintMovieOver;

            moviePlayer.MovieFinished += handler;

            moviePlayer.PlayMovie();
        }
예제 #6
0
        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();
        }
예제 #7
0
        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
        }
예제 #8
0
        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();
        }
예제 #9
0
        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");
            };
        }
예제 #10
0
        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();
        }