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