【笔记】Linq入门笔记(一)

原创 萧瑟  2017-08-24 11:20:31  阅读 377 次 评论 0 条

隐式类型、匿名类型、对象初始化器

(1)隐式类型,使用var关键字创建,C#编译器会根据用于初始化局部变量的初始值推断出变量的数据类型。(不过我个人认为,能用具体类型的地方尽量不要用var关键字,因为这样会让你遗忘“被封装类库”方法的返回值类型--有损可读性)

隐式类型使用限制:

(a)隐式类型只能应用于方法或者属性内局部变量的声明,不能使用var来定义返回值、参数的类型或类型的数据成员。 (b)使用var进行声明的局部变量必须赋初始值,并且不能以null作为初始值。

(2)匿名类型,只是一个继承了Object的、没有名称的类。C#编译器会在编译时自动生成名称唯一的类。

(3)对象初始化器,提供一种非常简洁的方式来创建对象和为对象的属性赋值。(相关还有“集合初始化器”)

由于C#强类型语言,即我们在声明变量时必须指定变量的具体类型。所以在创建匿名对象时,需要结合隐式类型、匿名类型、对象初始化器一起创建匿名对象。(避免类型转换)

案例代码

var user = new { name = "小A", age = 18 };

Lambda表达式,Func委托

(1)Lambda表达式只是用更简单的方式来书写匿名方法,从而彻底简化.NET委托类型的使用。 Lambda表达式在C#中的写法是“arg-list => expr-body”,“=>”符号左边为表达式的参数列表,右边则是表达式体(body)。参数列表可以包含0到多个参数,参数之间使用逗号分割。 (2)Func委托 Func委托,是微软为我们预定义的常用委托,封装一个具有:零个或多个指定类型的输入参数并返回一个指定类型的结果值的方法。 Func委托

案例代码

static void Main(string[] args)
        {
            // 匿名对象
            var user = new { name = "小A", age = 18 };
            Console.WriteLine("本次访问的是" + user.name + ",年龄:" + user.age);

            // 委托函数
            Func<string, string, string> func1 = Hello;
            // 匿名函数
            Func<string, string, string> func2 =
                delegate (string a, string b)
                {
                    return "欢迎您," + a + ",您是第" + b + "访客。" + Environment.NewLine + "您要进行什么操作?";
                };
            // Lambda表达式
            Func<string, string, string> func3 = (a, b) => { return "欢迎您," + a + ",您是第" + b + "访客。" + Environment.NewLine + "您要进行什么操作?"; };
            // 调用Func委托
            string a1 = func1("小明", "1");
            string a2 = func2("小红", "2");
            string a3 = func3("小黑", "3");
            Console.WriteLine(a1);
            Console.WriteLine(a2);
            Console.WriteLine(a3);
        } 
        //  函数
        static string Hello(string a, string b)
        {
            return "欢迎您," + a + ",您是第" + b + "访客。" + Environment.NewLine + "您要进行什么操作?";
        }
本文地址:https://www.xsyrz.cn/Linq-Demo1.html
版权声明:本文为原创文章,版权归 萧瑟 所有,欢迎分享本文,转载请保留出处!

发表评论


表情

还没有留言,还不快点抢沙发?