C#3.0新體驗(一)隱含類型局部變量

前言概述:
      
微軟的腳步一直都很快,經常發現很多技術還沒學就已經過時了(可能是本人學習能力低下);作爲研發個人認爲應該站在技術的前沿,一定要跟上新技術的腳步(沒辦法,不學這些東西,過一段時間飯碗要保不住的);
       從2002開始做開發,一直以來都在用vs.net(c#),可以算的上使用.net的一個老程序員了,可是回頭看看,居然對.net很多都不瞭解,或者是一知半解;(汗如泉湧)作爲一個用了5,6年.net開發的程序員,居然只知道頁面放控件要整齊好看,UI數據傳遞給業務層處理,然後調用數據層訪問(工作主要處理內容),很長一段時間不知道asp.net爲何物(以前一直做winform),開發使用的最原始的.net自帶IDE工具,沒有開發任何輔助工具,對架構設計沒什麼概念,項目管理不知如何下手,測試全靠手工點界面,性能優化沒有效果,數據事務沒有保障,安裝部署從來不知道怎麼弄,代碼重構沒有幹過,設計模式只知道工廠... ...
       實在有太多東西不懂,(省略號包含的內容太多)這兩年剛開始接觸asp.net開發,一個人摸着石頭過河,走了不少彎路,到現在還在摸索,感覺好多基礎的東西都是新的;對自己能力極度懷疑的情況下,同時對微軟(當然包括其他WEB技術供應商)這些牛人們產生極度的憤慨,沒事搞出那麼多技術,讓我還怎麼活(能力較差,性格懶散類型),學好一個技術(點)還有N+1個在後面排着;
       這兩年忙着裝修,娶媳婦(全是偷懶的藉口),原來的一點技術上積累的老底已經過時,很多都用不上了,直接導致一個嚴重的後果:近兩年沒漲過工資,還要當心失業的問題(一家老小啊,還有萬惡的銀行貸款壓迫),在諸多壓力下,決定徹底改造,重新做人,爭取早日刑滿釋放,TNND,應該說金盆洗手(攢個百八十萬的,當然要算美金纔行,這社會RMB不經花),於是乎,決定從基礎學起,開始這個C#3.0歷程,希望整理的這些資料能給各位有一點點幫助!

 一.C# 3.0語言主要增強點

• 隱含類型局部變量

• 擴展方法

• 對象與集合初始化器

• 匿名類型

• Lambda表達式

• 查詢表達式( LINQ )

• 表達式樹


 二.隱含類型局部變量

先來看看例句:

var i = 5;

var h=23.56;

var s = “C Sharp";

var intArr = new[] {1,2,3,4} ;

var a = new[] { 1, 10, 100, 1000 };

"var"這個關鍵字是不是很眼熟,javascript中經常用到(互相學習現在比較常見了),當然C#中var和javascript的var差別還是比較大。

1.var只能作爲局部變量使用;

就是說var只能定義在一個方法裏面,或者foreach,for,using等語句裏面:

public class VarTest
{
     private void test()
     {
         var i = 0;
     }
 } 

2.var可以申明任何類型變量,可以根據後面的初始化語句自動推斷類型;

這個和object有點像,但var是強類型,根據初始化表達式來定義變量的類型;

var i=0; i 是int類型

var str = "test"; str是string類型

3.var定義時,必須使用表達式初始化;

也就是必須定義成 var i=0; 沒有初始化編譯會報錯,而且初始化值不能爲null,編譯器無法根據null來推斷出局部變量的類型;初始值除了int,string等數據類型外,還可以使用new 一個對象作爲初始值(從網上大家發表的看法,var使用最多的就是配合一個匿名類型的對象來使用,以及在Linq中使用)


//下面是網上某個網友寫得博客,拷貝修改了一下!

配合匿名類型使用:

             var a = new{ Name = "maotin" ,Age = 99};
            Console.WriteLine(a.Name);
            Console.WriteLine(a.Age);

                在linq中應用:

  int[] numbers = 5413986720 };
var queryLowNums =
    from num in numbers
    where num < 5
    select num;
foreach (var s in queryLowNums)
  {
     Console.Write(s.ToString() + " ");
  }

4.var使用建議

一般var不要像“var i=9;”這樣使用,程序可讀性不高;

在匿名類型中使用比較方便;foreach中使用也不錯;

var只是語言層面的東西,編譯器會在編譯的時候通過類型推斷把它換成真正的類型

(轉帖自http://blog.csdn.net/maotin/archive/2008/09/23/2968141.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章