static void Main(string[] args) { Movie movie1 = new Movie("Scary Movie", Genre.Comedy, 6.6); Movie movie2 = new Movie("American Pie", Genre.Comedy, 2.5); Movie movie3 = new Movie("Saw", Genre.Horror, 1.9); Movie movie4 = new Movie("The Shining", Genre.Horror, 4.3); Movie movie5 = new Movie("Rambo", Genre.Action, 3.2); Movie movie6 = new Movie("The Terminator", Genre.Action, 4.1); Movie movie7 = new Movie("Forrest Gump", Genre.Drama, 4.9); Movie movie8 = new Movie("12 Angru Men", Genre.Drama, 4.6); Movie movie9 = new Movie("Passengers", Genre.SciFi, 3.7); Movie movie10 = new Movie("Interstellar", Genre.SciFi, 3.3); List <Movie> movies = new List <Movie>() { movie1, movie2, movie3, movie4, movie5, movie6, movie7, movie8, movie9, movie10 }; var movies2 = (from movie in movies where movie.Rating > 4 select movie).ToList(); var movies3 = (from movie in movies where movie.Genre == Genre.Horror || movie.Genre == Genre.SciFi select movie).ToList(); Cinema cinema1 = new Cinema("cineplex1", new List <int> { 1, 2, 3, 4, }, movies); Cinema cinema2 = new Cinema("cineplex2", new List <int> { 1, 2, 3, 4, }, movies2); Cinema cinema3 = new Cinema("cineplex3", new List <int> { 1, 2, 3 }, movies3); List <Cinema> cinemas = new List <Cinema>() { cinema1, cinema2, cinema3 }; try { Console.WriteLine("Choose cinema you want to go"); foreach (var cinema in cinemas) { Console.WriteLine(cinema.Name); } Console.Write("Cinema: "); string input = Console.ReadLine(); if (input != "cineplex1" && input != "cineplex2" && input != "cineplex3") { throw new Exception("You must enter valid cinema"); } var cinemaYouWantToGo = (from cinema in cinemas where cinema.Name == input select cinema).FirstOrDefault(); Console.WriteLine("Do you want 1. all movies or 2.by genre"); string input2 = Console.ReadLine(); if (input2 == "1") { Console.WriteLine("Choose movie you want to watch"); foreach (var item in cinemaYouWantToGo.ListOfMovies) { Console.WriteLine($"{item.Title} - {item.Genre} / {item.TicketPrice}"); } } else if (input2 == "2") { Console.WriteLine("Enter your favorite genre"); foreach (var item in cinemaYouWantToGo.ListOfMovies) { Console.WriteLine(item.Genre); } Console.WriteLine(); Console.Write("Genre: "); string inputGenre = Console.ReadLine().ToLower(); Genre favoriteGenre = new Genre(); switch (inputGenre) { case "action": favoriteGenre = Genre.Action; break; case "horror": favoriteGenre = Genre.Horror; break; case "comedy": favoriteGenre = Genre.Comedy; break; case "drama": favoriteGenre = Genre.Drama; break; case "scifi": favoriteGenre = Genre.SciFi; break; default: throw new Exception("You enter wrong genre"); } Console.WriteLine("Choose movie you want to watch"); var moviesByGenre = (from movie in cinemaYouWantToGo.ListOfMovies where movie.Genre == favoriteGenre select movie).ToList(); foreach (var item in moviesByGenre) { Console.WriteLine($"{item.Title} - {item.Genre} / {item.TicketPrice} $"); } } else { throw new Exception("You must enter 1 or 2"); } Console.WriteLine(); Console.Write("Movie: "); string movieToWatch = Console.ReadLine().ToLower(); var watchingMovie = (from movie in cinemaYouWantToGo.ListOfMovies where movie.Title.ToLower() == movieToWatch select movie).FirstOrDefault(); cinemaYouWantToGo.MoviePlaying(watchingMovie); } catch (NullReferenceException) { Console.WriteLine("You entered wrong movie"); } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.ReadLine(); }
static int Main(string[] args) { //LINQ немедленое выполнение //string[] names = { "Sasha+Inna", "Sasha+Oksana", "Igor", "mISHA", "Sasha+Naruto", "Beer" }; //LINQ linq = new LINQ(); //string[] result = linq.TestLinq(names); //foreach(var i in result) //{ Console.WriteLine(i); } ////LINQ отложеное выполнение, вместо var почти всегда подходит IEnumerable<T> //var sasha = from i in names where i.Contains("Sasha") select i; //foreach(var k in sasha) //{ Console.WriteLine(k); } Cinema cinema = new Cinema(); cinema.ShowViewers(); cinema.agregate(); //простой делегат //Glava10.Binary b = new Glava10.Binary(Glava10.SimpleMath.Add); //Console.WriteLine(b(10, 5)); //Glava10.DelegateInfo(b); //применения делегатов для обратных вызовов в приложениях, //Glava10.Car c1 = new Glava10.Car(10, 100, "dog"); //c1.RegisterWithCarEngine(new Glava10.Car.CarEngineHandler(OnCarEngineEvent)); //c1.RegisterWithCarEngine(new Glava10.Car.CarEngineHandler(OnCarEngineEvent1)); //Console.WriteLine("***** Speeding up *****"); //for (int i = 0; i < 6; i++) // c1.Accelerate(20); //Что бы не писать ((c1.RegisterWithCarEngine(new Glava10.Car.CarEngineHandler(OnCarEngineEvent));)) // можно указать просто метод, например: //Glava10.Car c2 = new Glava10.Car(10, 100, "Cat"); //c2.RegisterWithCarEngine(DelegtText); //Console.WriteLine("***** Speeding up *****"); //for (int i = 0; i < 6; i++) // c2.Accelerate(20); //Использование специальных обобщенных делегатов Action i Func //Action<string, ConsoleColor, int> actionTarget = new Action<string, ConsoleColor, int>(Glava10.DisplayMessage); //actionTarget("sasha", ConsoleColor.Red, 5); //Func<int, int, int> funcTarget = new Func<int, int, int>(Glava10.Metod_func);//полная запись //Console.WriteLine(funcTarget(10,50)); //Func<int, int, int> func1 = Glava10.SimpleMath.Add;//можно просто указать имя метода //Console.WriteLine(func1(99, 99)); //События //Glava10.Car2 car2 = new Glava10.Car2(10, 100, "bob"); //car2.Exploed += OnCarEngineEvent; //car2.AboutToBlow += OnCarEngineEvent1; //Glava10.Car2.CarEngineYandler d = new Glava10.Car2.CarEngineYandler(DeledFunk); //car2.AboutToBlow += d; //car2.AboutToBlow += delegate (string s)//использование анонимных методов вместо фунций //{ // Console.WriteLine("Using anonim method {0}", s); // car2.PetName2 = "Ssss"; //}; //car2.AboutToBlow += (string ss) => { Console.WriteLine("Using Lambda: {0}", ss); };// использование лямда выражений //for (int i = 0; i < 6; i++) // car2.Accelerate2(20); //car2.AboutToBlow -= d; //Console.WriteLine(car2.PetName2); //использование лямбда выражений //List<int> list = new List<int>(); //list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }); //List<int> eventNumbers = list.FindAll(delegate (int i) // { return (i % 2) == 0; }) ; //List<int> NeChetni = list.FindAll(i => (i % 2) != 0);//использование сокращенной записи //foreach (int e in eventNumbers) // Console.WriteLine(e); //foreach (int x in NeChetni) // Console.WriteLine(x); ////ИНТЕРФЕЙСЫ //Shape[] s = { new Triangle("Triangle", 3), new Square("square"), new Circle("circle", 34) }; //for(int i =0; i < s.Length; i++) //{ // if (s[i] is IPoint ip) // { // Console.WriteLine("The {0} have {1} points", s[i].Name, ip.Points); // } // else Console.WriteLine("The {0} dont have points", s[i].Name); //} //Number num = new Number(); //foreach(One t in num) //{ // Console.WriteLine(t.O); //} ////use yield //Second ss = new Second(); //foreach (Two tt in ss) // Console.WriteLine(tt.T); // ИСКЛЮЧЕНИЯ //FunWithExeption test = new FunWithExeption("Sasha", 20); //try //{ // test.BuyBeer(); //} //catch(Exception t) //{ // Console.WriteLine(t.Message); // Console.WriteLine(t.Source); // Console.WriteLine(t.HelpLink); //} //Наследование, полиморфизм //Mersedes mers = new Mersedes(120,100,5,"AMG",12.3); //mers.Display(); //mers.Transmishion("avto"); //свойства properties //Prop prop = new Prop(); //prop.PetName = "Mazda"; //prop.MyCar.Id = 1444444; //Console.WriteLine("{0}----{1}", prop.Speed,prop.MyCar.Pay ); //prop.MyCar.Print(); //Employee e = new Employee("Sasha", 124, 10000); //e.GiveBonus(999); //e.Print(); //e.Name = "Inna"; //Car bibi = new Car(); //bibi.PrintInfoCar(); //Car bib = new Car("Toyota",99); //bib.PrintInfoCar(); //Part_Two.Arrays(); //double[] kk = {1.2, 1.4, 0.4 }; //Console.WriteLine(Part_Two.Avg(kk)); //Console.WriteLine(ReloadOperators.Add(3, 5)); //Console.WriteLine(ReloadOperators.Add("Sasha","Grinchuck" )); //DataType.LearnENum(); //UseStructures.UsePoint(); //FunTuple.Tup(); //Создание екземпляра класса и вызов его метода //Part_Two Test = new Part_Two(); //Console.WriteLine(Test.Avg(kk)); // Перший спосіб написання циклу используеться при когда нужно конкретное к-во повторений //for (int i = 0; i < args.Length; i++) // Console.WriteLine("Arg : {0}", args[i]); // другрий спосіб написання циклу используется для итерации по контейнеру //foreach (string arg in args) // Console.WriteLine("Argument: {0}", arg); //UsingForeach(args); //UseReadline(); //LocalVar(); //NewAndDefault(); //UseChar(); //UseParse(); //ParseFromStringsWithTryParse(); //UseBigInteger(); //StringFunctionality(); //UseStringBilder(); //TypesConvertation(); //NeYavnoType(); //Cikle_and_IF(); //SwitchOnStnngExample(); Console.ReadLine(); return(-1); }