Exemple #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Hello Del20200327c!");
            (int a, int b) = GetInput();

            Console.WriteLine("=======using a method call=========");
            int result = Add(a, b);

            Console.WriteLine(result);
            result = Sub(a, b);
            Console.WriteLine(result);
            result = Prod(a, b);
            Console.WriteLine(result);
            result = Mod(a, b);
            Console.WriteLine(result);
            result = Pow(a, b);
            Console.WriteLine(result);

            Console.WriteLine("=======using a delegate=========");
            IntDel idel = new IntDel(Add);

            Console.WriteLine(idel(a, b));
            idel = Sub;
            Console.WriteLine(idel(a, b));
            idel = Prod;
            Console.WriteLine(idel(a, b));
            idel = Mod;
            Console.WriteLine(idel(a, b));
            idel = Pow;
            Console.WriteLine(idel(a, b));
        }
Exemple #2
0
        static void Main(string[] args)
        {
            // Inicialização e chamada (invoke) do delegate
            //IntDel del = new IntDel(Add); // Explicitamente como qualquer objeto
            IntDel del = Add; // implicitamente

            //int result = del.Invoke(1, 2); // chamada explicita
            int result = del(1, 2); //implicita

            Console.WriteLine("Resultado: {0}", result);
        }
Exemple #3
0
        static void Main(string[] args)
        {
            // Write code in Main that initializes and invokes the delegate
            //IntDel del = new IntDel(Add); // Explicit del init
            IntDel del = Add;

            //int result = del.Invoke(1, 2); // Explicit invocation
            int result = del(1, 2);

            Console.WriteLine("Add result: {0}", result);
        }
        static void Main(string[] args)
        {
            //Write code in Main that initializes and invokes the delegate
            //var del = new IntDel(Add);//Optional
            IntDel del = Add;

            //Invoke the delegate
            //int result = del(1, 2);//Optional
            int result = del.Invoke(1, 2);

            Console.WriteLine("Add Result: {0}", result);
            Console.ReadLine();
        }
Exemple #5
0
        static void Main(string[] args)
        {
            WuDel_Class wuDel_Class = new WuDel_Class();
            //调用无参数的委托
            WuDel wuDel = wuDel_Class.Print1;

            wuDel += wuDel_Class.Print2;
            wuDel += wuDel_Class.Print1;//现在,委托的方法列表中有3个方法
            Console.WriteLine("无参委托:");
            if (null != wuDel)
            {
                wuDel();
            }
            else
            {
                Console.WriteLine("委托为空");
            }

            IntDel_Class intDel_Class = new IntDel_Class();
            //调用有返回值的委托
            IntDel intDel = intDel_Class.Add2;

            intDel += intDel_Class.Add3;
            intDel += intDel_Class.Add2;
            Console.WriteLine("带返回值委托:");
            Console.WriteLine("Value:{0}", intDel());

            RefDel_Class refDel_Class = new RefDel_Class();
            //带引用参数的委托
            RefDel refDel = refDel_Class.Add2;

            refDel += refDel_Class.Add3;
            refDel += refDel_Class.Add2;
            int Intvalue = 5;

            refDel(ref Intvalue);//调用
            Console.WriteLine("带引用参数的委托:");
            Console.WriteLine("Value:{0}", Intvalue.ToString());
            Console.ReadKey();
        }
        private static void Main(string[] args)
        {
            // WRITE CODE IN MAIN THAT INITIALIZES AND INVOKES THE DELEGATE
            var    delA = new IntDel(Add);
            IntDel delB = Add;

            // INVOKE THE DELEGATE
            int resultA1 = delA.Invoke(1, 2);
            int resultA2 = delB.Invoke(2, 3);

            // QUERIES!!!
            // Standard Query
            IEnumerable <int> highScoresQuery =                               // Query Variable
                                                from number in d.users        // Required
                                                where number.Fav > 50         // Optional
                                                orderby number.Fav descending // Optional
                                                select number.Fav;            // Must end in Select or Groupby

            // Projection - Int to a String
            IEnumerable <string> highScoresQuery2 =
                from number in d.users
                where number.Fav > 80
                orderby number.Fav descending
                select $"The score is {number}";

            // Count Expression
            int highScoreCount =
                (from number in d.users
                 where number.Fav > 80
                 select number.Fav)
                .Count();
            /********* OR ***********/
            IEnumerable <int> highScoresQuery3 =
                from number in d.users
                where number.Fav > 80
                select number.Fav;
            int scoreCount = highScoresQuery3.Count();

            // Groupby
            var queryNumberGroup =
                (from number in d.users
                 group number by number.Fav >= 75);

            // Projection - Anonnymous Type
            var favNumQuery =
                from user in d.users
                select new { name = user.F_name + " " + user.L_name, number = user.Fav };

            // averageQuery is an IEnumerable<IGrouping<int, User>>
            var averageQuery =
                from user in d.users
                let tenth = (int)user.Fav / 10
                            group user by tenth into userGrouped
                            orderby userGrouped.Key descending
                            where userGrouped.Key > 5
                            select userGrouped;

            // Filtering using Where clause
            var rangeFavs =
                from user in d.users
                where user.Fav > 50 && user.Fav < 80
                select new { name = user.F_name + " " + user.L_name, favNum = user.Fav };

            // Orderby Clause
            IEnumerable <User> userQuery =
                from user in d.users
                orderby user.F_name, user.L_name descending
            select user;

            // Join Clause
            var favFimlQuery =
                from user in d.users
                join film in d.films on user.Fav equals film.FilmID
                orderby user.F_name, user.L_name
                select new { user = user.F_name + " " + user.L_name, film.FilmTitle };

            // Let Clause
            string[]             names           = { "Svetlana Omelchenko", "Claire O'Donnell", "Sven Mortensen", "Cesar Garcia" };
            IEnumerable <string> queryFirstNames =
                from name in names
                let firstName = name.Split(' ')[0]
                                select firstName;

            // SubQueries
            var queryGroupMax =
                from student in d.students
                group student by student.Year into studentGroup
                select new
            {
                Level        = studentGroup.Key,
                HighestScore =
                    (from student2 in studentGroup
                     select student2.ExamScores.Average())
                    .Max()
            };

            // Query Syntax
            // Query #1
            IEnumerable <int> numbersList    = numbers1.Concat(numbers2);
            IEnumerable <int> filteringQuery =
                from number in numbersList
                where number < 3 || number > 7
                select number;

            // Query #2
            IEnumerable <int> orderingQuery =
                from num in numbersList
                where num < 3 || num > 7
                orderby num ascending
                select num;

            // Method Syntax
            // Query #1
            double average = numbers1.Average();

            // Query #2
            IEnumerable <int> concatedValues = numbers1.Concat(numbers2);

            // Query #3
            IEnumerable <int> largeNumbersQuery = numbers2.Where(c => c > 15);



            // Mixed query and method syntax
            // Query #1
            int numCount1 =
                (from num in numbers1
                 where num < 3 || num > 7
                 select num).Count();

            // Query #2
            IEnumerable <int> numbersQuery =
                from num in numbers1
                where num < 3 || num > 7
                select num;
            int numCount2 = numbersQuery.Count();


            IEnumerable <int> queryFactorsOfFour =
                from num in numbers1.Concat(numbers2)
                where num % 4 == 0
                select num;
            List <int> factorsofFourList = queryFactorsOfFour.ToList();



            // OUTPUT!!



            Console.Write("Press any key to continue. . .");
            Console.ReadKey();
        }