zoukankan      html  css  js  c++  java
  • C#之LinQ数据库

    一:与LINQ有关的语言特性

      1.隐式类型

        (1)源起

          在隐式类型出现之前,

          我们在声明一个变量的时候,

          总是要为一个变量指定他的类型

          甚至在foreach一个集合的时候,

          也要为遍历的集合的元素,指定变量的类型

          隐式类型的出现,

          程序员就不用再做这个工作了。

        (2)使用方法

           来看下面的代码:    

          var a = 1; //int a = 1;
          var b = "123";//string b = "123"; 
          var myObj = new MyObj();//MyObj myObj = new MyObj()

          上面的每行代码,与每行代码后面的注释,起到的作用是完全一样的

          也就是说,在声明一个变量(并且同时给它赋值)的时候,完全不用指定变量的类型,只要一个var就解决问题了

        (3)你担心这样写会降低性能吗?

          我可以负责任的告诉你,这样写不会影响性能!

          上面的代码和注释里的代码,编译后产生的IL代码(中间语言代码)是完全一样的

          (编译器根据变量的值,推导出变量的类型,才产生的IL代码)      

        (4)这个关键字的好处:

          你不用在声明一个变量并给这个变量赋值的时候,写两次变量类型

          (这一点真的为开发者节省了很多时间)

          在foreach一个集合的时候,可以使用var关键字来代替书写循环变量的类型

         (5)注意事项

          你不能用var关键字声明一个变量而不给它赋值

          因为编译器无法推导出你这个变量是什么类型的。

      2.匿名类型

        (1)源起

          创建一个对象,一定要先定义这个对象的类型吗?

          不一定的!

          来看看这段代码

        (2)使用 

             var obj = new {Guid.Empty, myTitle = "匿名类型", myOtherParam = new int[] { 1, 2, 3, 4 } };
             Console.WriteLine(obj.Empty);//另一个对象的属性名字,被原封不动的拷贝到匿名对象中来了。
             Console.WriteLine(obj.myTitle);
             Console.ReadKey();

          new关键字之后就直接为对象定义了属性,并且为这些属性赋值

          而且,对象创建出来之后,在创建对象的方法中,还可以畅通无阻的访问对象的属性

          当把一个对象的属性拷贝到匿名对象中时,可以不用显示的指定属性的名字,这时原始属性的名字会被“拷贝”到匿名对象中

        (3)注意    

          如果你监视变量obj,你会发现,obj的类型是Anonymous Type类型的

          不要试图在创建匿名对象的方法外面去访问对象的属性!

        (4)优点

          这个特性在网站开发中,序列化和反序列化JSON对象时很有用

  • 相关阅读:
    对网页图片的增删改管理
    还没搞完的排序(后期更新)
    web实现图片动态
    C++11 笔记
    如何解决刷新系统桌面响应速度很慢的问题
    CGrowableArray解析 _ DXUT容器
    测试...外部指针访问private
    CustomUI Direct3D9_Sample
    缺少.lib文件导致的Link2019 解决方案汇总
    在DirectX9中使用DXUT定制按钮来控制模型旋转的问题
  • 原文地址:https://www.cnblogs.com/lushilin/p/4462053.html
Copyright © 2011-2022 走看看