C#之LinQ資料庫

來源:互聯網
上載者:User

標籤:

一:與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對象時很有用

C#之LinQ資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.