前言概述:
微軟的腳步一直都很快,經常發現很多技術還沒學就已經過時了(可能是本 人學習能力低下);作為研發個人認為應該站在技術的前沿,一定要跟上新技術 的腳步(沒辦法,不學這些東西,過一段時間飯碗要保不住的);
從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 = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
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只是語言層面的東西,編譯器會在編譯的時候通過類型推斷把它換成真正 的類型
(轉帖請注明出處!謝謝)