C#編程語言學(xué)習(xí)筆記
歡迎您加入C#的世界!這一章將把您引進(jìn)C#的天地,并回答一些相關(guān)的問題,如:您為什么要使用C#,C++和C#的主要有什么不同點(diǎn),以及為什么C#使開發(fā)更容易而且還使您感到很有趣。為什么是C#編程語言?
必須回答的一個(gè)問題:當(dāng)您已經(jīng)使用C++或VB從事企業(yè)開發(fā)時(shí),為什么還要學(xué)習(xí)另一種語言? 市場(chǎng)式的回答就是:"在企業(yè)計(jì)算領(lǐng)域,C#將會(huì)變成為用于編寫"下一代窗口服務(wù)"(Next Generation Windows Services,簡(jiǎn)寫為NGWS )應(yīng)用程序的主要語言。" 這一章將對(duì)用參數(shù)請(qǐng)求提供支持,并陳列了C#的一些功能。這一章會(huì)使您開胃的。
C#編程語言自C/C++演變而來。但是,它現(xiàn)代、簡(jiǎn)單、完全面向?qū)ο蠛皖愋桶踩H绻荂/C++程序員,學(xué)習(xí)曲線將會(huì)很平坦。許多C#語句直接借用您所喜愛的語言,包括表達(dá)式和操作符。假如不仔細(xì)看,簡(jiǎn)直會(huì)把它當(dāng)成C++.
關(guān)于C#最重要的一點(diǎn):它是現(xiàn)代的編程語言。它簡(jiǎn)化和現(xiàn)代化了C++在類、名字空間、方法重載和異常處理等領(lǐng)域。屏棄了C++的復(fù)雜性,使它更易用、更少出錯(cuò)。
對(duì)C#的易用有貢獻(xiàn)的是減少了C++的一些特性,不再有宏、模板和多重繼承。特別對(duì)企業(yè)開發(fā)者來說,上述功能只會(huì)產(chǎn)生更多的麻煩而不是效益。使編程更方便的新功能是嚴(yán)格的類型安全、版本控制、垃圾收集(garbage collect)等等。所有的這些功能的目標(biāo)都是瞄準(zhǔn)
了開發(fā)面向組件的軟件。
在繼續(xù)呈現(xiàn)出更多的功能之前,我想停下來并在下面說明C#至關(guān)重要的各種要素。
簡(jiǎn)單
C#具有C++所沒有的一 個(gè)優(yōu)勢(shì)就是學(xué)習(xí)簡(jiǎn)單。C#編程語言首要的目標(biāo)就是簡(jiǎn)單。很多功能(還不如說是缺少了C++的一些功能)有助于C#全方位的簡(jiǎn)單。在C#中,沒有C++中流行的指針。默認(rèn)地,您工作在受管理的代碼中,在那里不允許如直接存取內(nèi)存等不安全的操作。我想
沒有C++程序員可以聲稱,從沒有使用指針訪問過不屬于他們的內(nèi)存。與指針"戲劇性"密切相關(guān)的是"愚蠢的"操作。在C++中,有::、。、和->操作符,它們用于名字空間、成員和引用。對(duì)于新手來說,操作符至今仍是學(xué)習(xí)的一道難關(guān)。C#棄用其它操作符,僅使用單個(gè)操作符 ".".現(xiàn)在一個(gè)程序員所需要理解的就是嵌套名字的注解了。
您不必記住基于不同處理器架構(gòu)的隱含的類型,甚至各種整型的變化范圍。C#使用統(tǒng)一的類型系統(tǒng),屏棄了C++多變的類型系統(tǒng)。這種系統(tǒng)充許您把各種類型作為一個(gè)對(duì)象查看,它是一個(gè)原始類型還是一個(gè)full-blown 類。和其它編程語言相比,由于加框(boxing)和消框(unboxing)的機(jī)制,把簡(jiǎn)單類型當(dāng)作對(duì)象處理并不能獲得性能的改善。稍后將詳細(xì)解釋加框和消框,但基本上僅當(dāng)需要時(shí)才使用對(duì)象訪問簡(jiǎn)單類型這種技術(shù)。
首先,老練的程序員可能不喜歡它,但是整型和布爾型如今終歸是兩種完全不同的數(shù)據(jù)類型。這就意味著原來if語句中錯(cuò)誤的賦值現(xiàn)在會(huì)被編譯出錯(cuò),因?yàn)閕f語句只接受布爾類型的值。再也不會(huì)出現(xiàn)誤用賦值符為比較符這樣的錯(cuò)誤!
C#同時(shí)也解決了存在于C++中已經(jīng)有些年頭的多余東西(redundancies)。這種多余包括常數(shù)預(yù)定義,不同字符類型等。鑒于多余表單已經(jīng)從C#編程語言中消失,故一般在C#中都可以使用表單了。
現(xiàn)代
您投入學(xué)習(xí)C#的努力是一筆大投資,因?yàn)镃#是為編寫NGWS 應(yīng)用程序的主要語言而設(shè)計(jì)。您將會(huì)發(fā)現(xiàn)很多自己用C++可以實(shí)現(xiàn)或者很費(fèi)力實(shí)現(xiàn)的功能,在C#中不過是一部分基本的功能而已。對(duì)于企業(yè)級(jí)的編程語言來說,新增的金融數(shù)據(jù)類型很受歡迎。您用到了一種新的十進(jìn)制數(shù)據(jù)類型,它專用于金融計(jì)算方面。如果不喜歡這種現(xiàn)成簡(jiǎn)單的類型,根據(jù)您應(yīng)用程序的特殊需求,可以很容易地創(chuàng)建出新的一種數(shù)據(jù)類型。
我已經(jīng)提到,指針不再是您編程武器的一部分。不要太驚訝,全面的內(nèi)存管理已經(jīng)不是您的任務(wù)。運(yùn)行時(shí)NGWS提供了一個(gè)垃圾收集器,負(fù)責(zé)C#程序中的內(nèi)存管理。因內(nèi)存和應(yīng)用程序都受到管理,所以很必要增強(qiáng)類型安全,以確保應(yīng)用的穩(wěn)定性。
對(duì)于C++程序員,異常處理的切不是新的東西,但它是C#的主要功能。C#的異常處理與C++的不同點(diǎn)在于它是交叉語言的(運(yùn)行時(shí)的另一個(gè)功能)。在沒有C#之前,您必須處理怪異的HRESULTs,但現(xiàn)在由于使用了基于異常的健壯的出錯(cuò)處理, 這一切都 結(jié)束了。對(duì)于現(xiàn)代的應(yīng)用程序,安全是首要的,C#也不會(huì)例外。它提供了元數(shù)據(jù)語法,用于聲明下述NGWS安全模式的能力和許可。元數(shù)據(jù)是NGWS運(yùn)行時(shí)的一個(gè)關(guān)鍵的概念,下一章將涉及到它更深的含義。
【編輯推薦】