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
        }
Exemple #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;

            // 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();
        }
Exemple #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;

            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();
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var moviePlayer = new MoviePlayer();

            {
                Movies CurrentMovie = Movies.StarWars4;
            }

            moviePlayer.Play();
        }
Exemple #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var player = new MoviePlayer
            {
                CurrentMovie = new Movie
                {
                    Title       = "The Lion King",
                    ReleaseDate = new DateTime(2019, 7, 19)
                }
            };

            // we are treating methods as just another form of data
            // that can be in variables etc.
            MoviePlayer.MovieEndHandlerNoParam handler = AnnounceEndOfMovie;

            MoviePlayer.MovieEndHandlerWithTitle handler2 = AnnounceEndOfMovieByName;

            Action <string> handler3 = AnnounceEndOfMovieByName;

            // instead of declaring methods, i can use lambda expressions
            // to create functions in-line
            Action <string> handler4 = title => Console.WriteLine(title);

            Func <int, int, int> add = (a, b) => a + b;

            bool x = add(3, 4) == 7;

            // lambda expressions also allow "block body" like regular methods.
            Func <string, int> printLength = value =>
            {
                Console.WriteLine(value.Length);
                return(value.Length);
            };

            // subscribe to events with +=
            player.MovieEnd += handler4;
            player.MovieEnd += (title) => Console.WriteLine($"{title} is over from lambda.");
            //player.MovieEnd += handler2;
            //player.MovieEnd += handler2;

            //player.MovieEnd -= handler2; // unsubscribe with -=

            player.Play();

            Linq();
        }
        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
        }
Exemple #7
0
        static void Main(string[] args)
        {
            //var movie = new Movie();
            //movie.Name = "Infinity War";

            var movie = new Movie {
                Name = "Infinity War"
            };

            var moviePlayer = new MoviePlayer()
            {
                CurrentMovie = movie
            };

            // subscribe to the event:
            // first we need a function / method that should run
            // when the event occurs.

            // for the variable, the method itself is the value.
            // the type is, the delegate type defined in MoviePlayer.
            MoviePlayer.PlayFinishedHandler handler = EjectDisc;

            MoviePlayer.PlayFinishedHandlerWithName handler2 = EjectDisc;

            // subscribe to the event with +=
            // (why +=? because we are adding one function to a list of
            // other subscribing functions)
            //moviePlayer.PlayFinished += handler2;

            Action <string> handler3 = EjectDisc;

            moviePlayer.PlayFinished += handler3;

            Action <string> handler4 = name =>
            {
                Console.WriteLine("Handling with lambda expression");
            };

            moviePlayer.PlayFinished += handler4;

            //moviePlayer.PlayFinished -= handler; // unsubscribe

            moviePlayer.Play();
        }
Exemple #8
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            var player = new MoviePlayer
            {
                Currentmovie = new Movie
                {
                    Title       = "The Lion King",
                    ReleaseDate = new DateTime(2019, 7, 19)
                }
            };

            //we are treating methods as just another form of data
            //that can be in variables etc.
            MoviePlayer.MovieEndHandlerNoParam handler = AnnounceEndOfMovie;

            MoviePlayer.MovieEndHandlerWithTitle handler2 = AnnounceEndOfMovieByName;

            Action <string> handler3 = AnnounceEndOfMovieByName;

            Action <string> handler4 = (title) => Console.WriteLine(title);

            Func <int, int, int> add = (a, b) => a + b;

            bool x = add(3, 4) == 7;

            Func <string, int> printLength = value =>
            {
                Console.WriteLine(value.Length);
                return(value.Length);
            };


            //subscribe with +=
            player.MovieEnd += handler2;

            //unsubscribe with -=
            player.MovieEnd -= handler2;
            player.MovieEnd += (title) => Console.WriteLine($"(title) is over from lambda");

            player.Play();
        }
Exemple #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");
            };
        }
Exemple #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();
        }