Exemple #1
0
        static void Main(string[] args)
        {
            #region 没有参数没有返回值的方法使用lambda表达式
            MyDelegate md = () => { Console.WriteLine("lambda表达式"); };
            md();
            Console.ReadKey();
            #endregion

            #region  参数的lambda表达式
            Mydelegate md2 = m => { Console.WriteLine(m); };
            md2("有参数的lambda表达式");
            Console.ReadKey();
            #endregion

            #region  参数有返回值的lambda表达式
            AddDelegate1 ad = (arr) =>
            {
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.WriteLine(arr[i]);
                }
                return(arr.Sum());
            };
            int a = ad(1, 2, 3, 4, 5);
            Console.WriteLine(a);
            Console.ReadKey();
            #endregion
        }
        public static void Main0(string[] args)
        {
            // 匿名方法:匿名方法不能直接在类中定义,而是在给委托变量赋值时,需要赋值一个方法,此时可以“现做现卖”,定义一个匿名方法给该委托
            //无参数、无返回值的匿名方法
            MyDelegate md = delegate() {
                Console.WriteLine("Hello,World!");
            };

            //无参数、无返回值的 lambda(λ) 表达式
            md += () => {
                Console.WriteLine("lambda!");
            };
            md();

            //有参数、无返回值的匿名方法
            MyDelegate1 md1 = delegate(string msg) {
                Console.WriteLine(msg);
            };

            md1("Hello,World!2");
            //有参数、无返回值的 lambda 表达式:lambda 表达式不需要表明数据类型,因为委托已经限定了参数的数据类型
            MyDelegate1 md2 = msg => {
                Console.WriteLine(msg);
            };

            md2("hello,Lambda!");

            //有参数、有返回值的匿名方法
            AddDelegate add = delegate(int n1, int n2, int n3) {
                return(n1 + n2 + n3);
            };

            Console.WriteLine(add(10, 20, 30));
            //有参数、有返回值的 lambda 表达式
            AddDelegate add1 = (n1, n2, n3) => {
                return(n1 + n2 + n3);
            };

            Console.WriteLine(add1(1, 2, 3) + "lambda!");

            AddDelegate1 add2 = (arr) => {
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.WriteLine(arr[i]);
                }
                return(arr.Sum());
            };

            Console.WriteLine(add2(3, 4, 5) + " lambda!!");
        }
Exemple #3
0
        static void Main(string[] args)
        {
            //匿名方法
            //匿名方法不能直接在类中定义,而是在给委托变量赋值的时候,需要
            //赋值一个方法,此时可以“现做现卖”,定义一个匿名方法传递给该委托。
            //MyDelegate md = M1;

            #region  无参数,无返回值的一个匿名方法。

            //无参数,无返回值的一个匿名方法。
            //MyDelegate md = delegate()
            //{
            //    Console.WriteLine("小鸟说早早。");
            //};
            //md();
            //Console.ReadKey();

            #endregion


            #region  无参数无返回值的方法使用(lambda)λ表达式
            //MyDelegate md = () => { Console.WriteLine("lambda表达式!!"); };
            //md();
            //Console.ReadKey();

            #endregion


            #region   参数无返回值的匿名方法

            ////有参数无返回值的匿名方法
            //MyDelegate1 md = delegate(string msg)
            //{
            //    Console.WriteLine("早上好" + msg);
            //};
            //md("大家好!");
            //Console.ReadKey();

            #endregion


            #region   参数无返回值的lambda表达式
            ////lambda表达式不需要传递数据类型,因为委托已经限定了数据类型。
            //MyDelegate1 md = m => { Console.WriteLine(m); };
            //md("你好,翻译挺好。");
            //Console.ReadKey();

            #endregion


            #region   参数,有返回值的匿名函数

            //有参数,有返回值的匿名函数
            //AddDelegate ad = delegate(int n1, int n2, int n3)
            //{
            //    return n1 + n2 + n3;
            //};
            //int n = ad(10, 15, 20);
            //Console.WriteLine(n);
            //Console.ReadKey();

            #endregion


            #region   参数有返回值的lambda表达式
            //AddDelegate ad = (x, y, z) => { return x + y + z; };
            //int r = ad(10, 20, 30);
            //Console.WriteLine(r);
            //Console.ReadKey();

            #endregion


            //可变参数lambda表达式
            AddDelegate1 ad1 = (arr) =>
            {
                for (int i = 0; i < arr.Length; i++)
                {
                    Console.WriteLine(arr[i]);
                }
                return(arr.Sum());
            };
            int x = ad1(1, 2, 3, 4, 5);
            Console.WriteLine(x);
            Console.ReadKey();
        }