1. 程式人生 > >楊中科 【我來解惑】.Net應該學什麼怎麼學(一)

楊中科 【我來解惑】.Net應該學什麼怎麼學(一)

 上篇《學了.Net做什麼開發》中我講到了目前.Net開發主要方向是Web開發,因此在本篇中我將主要講解做Web開發要學哪些東西,怎麼學,由於內容比較多,我將分幾次發。下圖是我推薦的學習內容和學習順序(除了這裡列出的內容,要走向高手之路肯定還有更多技術需要學習,我這裡只是對於初學者列出的主幹學習內容,並不是全部):

    開發者口中的.Net全稱是.Net Framework,在中國大陸,一般將.Net讀作“道特耐特”(中文音標比英文音標更好讀,呵呵)或者“點耐特”。.Net是微軟推出的一門技術,它是一個技術平臺,基於這個平臺進行開發可以簡化很多工作。關於到底什麼是.Net,不是一兩句話能說清楚的,而且也沒辦法讓初學者理解到底什麼是.Net,因此你只要記住.Net這個詞,隨著我們越學越深入,你就會理解.Net到底是什麼東西了。

    基於.Net平臺上有很多語言,比如C#、VB.Net、IronPython、F#、Powershell等,F#、Powershell是滿足特定用途的語言,IronPython、IronRuby等並沒有廣泛應用,VB.Net是僅次於C#的第二大基於.Net的語言,不過按照微軟的戰略是把主要精力放到C#上,VB.Net只是微軟為了將VB開發人員平滑的轉移到.Net平臺下的語言。因此對於語言來說大家學習C#即可。C#在中國大陸的叫法一般是“C sharp(C煞普)”,也有少數人讀成“C井”,我不推薦這種叫法。

    初學者可能會弄不清C#和.Net的關係,.Net是一個技術平臺,而C#是這個技術平臺上的一門語言,就像Windows是一個作業系統,而Word、QQ、FireFox則是在Windows上執行的一個程式。初學者不必糾結於這個概念,不是很明白也沒關係。

    .Net的開發工具是VisualStudio,VisualStudio現在有VisualStudio2005、VisualStudio2008、VisualStudio2010等版本,注意不要糾結於“到底裝VisualStudio2005還是VisualStudio2008,聽說有的公司還在用VisualStudio2005”、“到底是用新版本的VisualStudio2010還是用VisualStudio2008”這樣的問題,因為這些版本並沒有本質的不同,使用方法都類似,就像你會用WindowsXP,換了Windows7以後經過短暫的熟練會用Windows7了一樣。因為VisualStudio2010比較消耗資源,如果你的計算機配置較好可以安裝VisualStudio2010,如果配置較差則推薦安裝VisualStudio2008。

     要學習Web開發一定要按照正確的順序進行學習,很多人被一些《21天精通***》這樣的垃圾書的影響,不學C#、不學.Net Framework、不學Dom,直接上來就學ASP.Net,拖兩個控制元件、配兩個屬性、雙擊控制元件寫一個事件響應方法,就開始自詡“精通ASP.Net”了,照著書控制元件拖來拖去,可是連C#、.Net、ASP.Net、HTML、JavaScript之前的關係是什麼都不清楚,鬧出了很多笑話。欲速則不達,速成的結果就是以後浪費更多的時間,回想這麼多年你走過的路,有多少次為了走快點就跳著走,最後又浪費時間返工的事情,按照正確的順序才能更快、更好的掌握.Net。

    有的人可能認為“我不想成為高手,有一口飯吃就行了,會拖控制元件就行了唄”,千萬不要以為會“不拖控制元件的開發”就是高手了,高手沒有那麼好當的。我沒有奢求學程式設計的人個個都是以“成為世界頂尖級程式設計師”、“國內.Net開發者中的知名開發者”為目標,這個也不現實,大部分人學程式設計只是看做軟體開發工資不低,想賺幾年錢娶媳婦生娃,這種想法並不是多沒出息的想法,畢竟“老婆孩子熱炕頭”是最樸實的幸福,你不需要揹負“振興中國軟體產業”這種的重任,但是最起碼應該找到一份不錯的工作,工作幾年以後能有錢交得起房子首付(對於大部分人來講,能夠交得起首付成為房奴都是很奢侈的事情)、每月供月供吧,如果只會拖控制元件的話就不是能不能成為高手的問題,而是能不能養家餬口的問題了。

     下面來詳細講解學習的各個步驟:

一、C#面向過程程式設計。

    學習C#語言分為C#面向過程程式設計和C#面向物件基礎兩部分。聽到“C#面向過程程式設計”有人會問了“C#不是一門面向物件的語言嗎,哪兒來的面向過程程式設計?”,其實面向物件不是代替面向過程的,面向物件是面向過程的一個補充和發展,面向過程就是程式碼逐行執行,面向過程就是if/else,面向過程就是for迴圈,面向過程就是變數、函式,C#中最基礎的也是if、for、變數、函式等這些東西,這些東西就是C#的面向過程部分。對於程式設計的初學者來說,最難的不是類、繼承、控制元件、ASP.Net、AJAX之類神乎其神的東西,而是“程式化的思維方式”,也就是怎麼把一個問題的解決方式用計算機的思維方式進行描述。

    我接到過很多想深入學習.Net學生的諮詢,當我問到“你的.Net基礎怎麼樣”的時候,很多人都回答“學過C#、.Net、ASP.Net,感覺基礎還行”,但是我給了他一個很簡單的題,比如“用for迴圈累加的方式計算1到100之間整數的和”、“提示使用者輸入兩個數字,然後程式列印兩個數字的和”,很多人都做不出來。

    對於初學者來說先不用管面向物件、ASP.Net之類的東西迷惑,先學習用最樸實的for、if來編寫程式,通過親手編寫練習題程式碼來逐漸形成程式化的思維方式,這個階段也不要使用“看起來很酷”的WinForm或者ASP.Net頁面來做,因為那樣就會涉及到這個階段不需要去了解的問題,先編寫最簡單的控制檯程式就可以。推薦大家看我錄製的視訊教程《》,這個教程針對C#零基礎的同學進行講解,並且在課程中給出了非常多的練習,一定要自己親手把程式碼熟練的寫出來,記住是親手寫出來,而不是照著我的程式碼抄,更不能是看懂了我的程式碼就以為自己掌握了,要知道“看懂了”和“會寫了”之間差著十萬八千里呢。對於初學者來說一開始寫那些練習可能有點困難,先理解我寫的程式碼,然後自己總結成“先***後***,再***,如果***則***”這樣的用語言描述的演算法,然後照著演算法描述自己寫程式碼,發現有地方寫起來遇到問題的話再參考我的程式碼,最後做到不用看我的程式碼、不用看演算法描述也能把程式碼寫出來,這樣第一階段的任務就完成了。下面列出我視訊教程中的一些練習題,大家可以自測看這個階段自己是否合格:

練習1:提示使用者輸入使用者名稱,然後再提示輸入密碼,如果使用者名稱是“admin”並且密碼是“888888”,則提示正確,否則提示錯誤,如果使用者名稱不是admin還提示使用者使用者名稱不存在。

練習2:提示使用者輸入年齡,如果大於等於18,則告知使用者可以檢視,如果小於10歲,則告知不允許檢視,如果大於等於10歲,則提示使用者是否繼續檢視(yes、no),如果輸入的是yes則提示使用者可以檢視,否則提示不可以檢視。(給出測試用例。)

練習3:從一個整數陣列中取出最大的整數

練習4:計算一個整數陣列的所有元素的和。

練習5:將一個字串陣列輸出為|分割的形式,比如{“浮雲”,”神馬”,”穿梭”}陣列輸出為“浮雲|神馬|穿梭”。不要使用String.Join等.Net內建方法。

練習6:有一個整數陣列,請宣告一個字串陣列,將整數陣列中的每一個元素的值轉換為字串儲存到字串陣列中。

練習7:將一個字串陣列的元素的順序進行反轉。{"3","a","8","haha"} 轉換為{"haha","8","a","3"}。提示:第i個和第length-i-1個進行交換。

學C#基礎的時候的參考書推薦如下兩本:

(1)《C#圖解教程》,這本書講的清晰易懂,不過部分內容安排順序不合理,大家按照我視訊中的順序進行學習就可以。

(2)《C#入門經典》適合零基礎的大部頭,不過非常厚,採用的是老外的描述方式,中國人讀起來有點彆扭,而且中文版翻譯的不是太好。

 注:以上謹代表個人觀點,我誓死捍衛你反對我觀點的權利,但請評論時保持文明用語。