码迷,mamicode.com
首页 > Windows程序 > 详细

C#高级功能(一)Lambda 表达式

时间:2016-06-23 23:55:05      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:

using System;

namespace NewAttr
{
    /// <summary>
    /// Lambda 表达式是一种可用于创建委托或表达式目录树类型的匿名函数。
    /// Lambda 表达式对于编写 LINQ 查询表达式特别有用。
    /// </summary>
    public class LambdaDemo
    {
        public LambdaDemo() { }
        /// 委托不能重载,即委托名称相同,参数类型,个数不同。
        /// 构造委托的时候,根本不管参数,当然也就不知道你要构造的是哪个委托。
        private delegate int del(int x);
        private delegate int del2(int x, int s);
        private delegate void del3();
        public static void Test()
        {
            del myDel1 = x => x * x;
            del myDel2 = (x) => x * x;
            del myDel3 = (x) => x * x;
            del myDel4 = (int x) => x * x;
            del myDel5 = (int x) => { return x * x; };
            Console.WriteLine("del myDel1 = x => x * x :{0}", myDel1(2));
            Console.WriteLine("del myDel2 = (x) => x * x :{0}", myDel2(2));
            Console.WriteLine("del myDel3 = (x) => x * x :{0}", myDel3(2));
            Console.WriteLine("del myDel4 = (int x) => x * x :{0}", myDel4(2));
            Console.WriteLine("del muDel5 = (int x) =>{1}:{0}", myDel5(2), " { return x * x; } ");
            del3 myDel6 = () => Test2();
            Console.WriteLine("--------------------------------");
            myDel6();
        }

        public static void Test2()
        {
            del2 myDel2 = (x, y) => x * y;
            del2 myDel3 = (int x, int y) => x * y;
            del2 myDel4 = (int x, int y) => { return x * y; };
            Console.WriteLine("del2 myDel2 = (x, y) => x * y :{0}", myDel2(2, 2));
            Console.WriteLine("del2 myDel3 = (int x, int y) => x * y :{0}", myDel3(2, 2));
            Console.WriteLine("del2 myDel4 = (int x, int y) => {1} :{0}", myDel4(2, 2), "{ return x * y; }");
            Console.WriteLine("--------------------------------");
            FunTest();
        }

        public static void FunTest()
        {
            ///其中 Func 是最多具有十六个输入参数的任何一个 Func 委托
            ///之后一个为返回值。
            ///Func<TResult>,Func<T,TResult>,Func<T,.....T,TResult>
            Func<int> myFunc = () => 1;
            Console.WriteLine("Func<int> myFunc = () => 1 :{0}", myFunc());
            Func<int, string, int> myFunc2 = (x, y) => x + y.Length;
            Console.WriteLine("Func<int, string, int> myFunc = (x, y) => x + y.Length :{0}", myFunc2(1, "jasonhua"));

            ///其中 Action 是最多具有十六个输入参数的任何一个 Action 委托
            Action myAction = () => { Console.WriteLine("Action myAction :1 * 1"); };
            myAction();
            Action<int, int> myAction2 = (x, y) => { Console.WriteLine("Action<int, int> myAction2 = (x, y) :{0}", x * y); };
            myAction2(1,1);
        }
    }
}

 

C#高级功能(一)Lambda 表达式

标签:

原文地址:http://www.cnblogs.com/zhao123/p/5612418.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!