C#3.0新體驗

iDotNetSpace發表於2008-09-26
前言概述:

微軟的腳步一直都很快,經常發現很多技術還沒學就已經過時了(可能是本人學習能力低下);作為研發個人認為應該站在技術的前沿,一定要跟上新技術的腳步(沒辦法,不學這些東西,過一段時間飯碗要保不住的);

從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只是語言層面的東西,編譯器會在編譯的時候通過型別推斷把它換成真正的型別

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-464470/,如需轉載,請註明出處,否則將追究法律責任。

相關文章