《C#入門與提高》(一) (轉)

worldblog發表於2007-12-07
《C#入門與提高》(一) (轉)[@more@]

《與提高》

前言

  1. C#介紹
    我們知道,C和C++已經成為廣泛的應用在商用的開發中的開發語言。但是C和C++的靈活性是犧牲了開發的。如果與其他的開發語言相比(比如說VB,),相同功能的C/C++軟體通常會需要更長的開發週期,要寫更多的程式碼。正是由於C/C++開發的複雜性和需要較長的開發週期,所以許多C/C++開發人員都在尋找一種可以在功能和開發效率間提高更多平衡的開發語言。 於是想到了C#(發音為 ),並推出了C#。2000年6月 釋出C#語言和平臺。C#語言是一種強型別的、面向的語言、它具有語法簡單、表達力強的特點;而.NET平臺則是構成微軟的“.NET計劃”的基石。.NET平臺的核心包括兩方面 一方面就是著名的通用語言執行機(Common Language Runtime) 雖然這個名詞起得晦澀了點 不過大家可以拿它和的虛擬機器來作比較,二者完成的任務大致相同,另一方面就是一大堆通用庫,這些庫函式可以被多種語言,並且透過編譯都產生一種共同的中間語言(Intermediate Language),這種語言也可以拿Java的位元組碼來類比,雖然完成的方式有些不一樣。C#是一種先進,物件導向的語言,透過C#可以讓開發人員的建立大範圍的基於MS平臺的應用,並且提供大量的開發工具和服務幫助開發人員開發基於計算和通訊的各種應用。 正是由於C#是一種物件導向的開發語言,所以C#可以大範圍的適用於高層商業應用和底層的開發。即使是透過簡單的C#構造也可以各種方便的轉變為基於的應用,並且能夠透過Internet被各種系統或是其他開發語言所開發的應用呼叫。
    它有以下的特點:

    開發效率與性
    目前的各種基於WEB應用的向傳統的商業應用軟體開發提出了挑戰,開發者被組織起來開發具有更短開發週期的各種應用,並且需要能夠提供更好的可修正性,而不是建立一個可以長久使用的軟體系統。
    C#的設計正是充分考慮了這些因素。C#會幫助開發者透過更少的程式碼完成相同的功能,並且能夠更好的避免錯誤發生。
    與WEB開發相結合
    新的開發意味著需要更好的利用現有的各種WEB標準,例如HTML,,P(簡單物件存取)。現存的開發工具是在Internet出現前或是未得到充分應用前出現的,所以都不能很好的適應目前WEB技術的開發需要。
    C#開發者可以方便的在M$網路平臺上擴充套件自己的應用。C#可以將任何元件轉變為WEB服務,並且可以被執行於Internet上的任何平臺的任何應用呼叫,重要的是C#對這一特性提供了內建的支援。
    更重要的一點,WEB服務可以讓任何WEB服務都看起來類似於C#的內建物件,所以可以讓開發人員在開發過程中繼續使用他們已經具備的物件導向的開發方法和技巧。
    此外C#還擁有許多其他特性使自己成為最出色的Internet開發工具。例如,XML目前已經成為網路中資料結構傳送的標準,為了提高效率C#將允許直接將XML資料對映成為結構。這樣的話可以有效的處理各種資料。
    減小開發中的錯誤
    即使是優秀的C/C++開發人員都難於避免在編碼過程出現一些常見錯誤,比如錯誤的初始化一個變數,而這種錯誤將有可能導致各種不可以預知的錯誤,並且難於被發現。如果一旦錯誤在發現前被投入生產環境,排除這些錯誤將會付出昂貴的代價。而C#的先進設計思想可以消除C/C++開發中的許多常見錯誤,比如:
    垃圾收集機制將減輕開發人員對的管理負擔。 C#中的變數將自動根據環境被初始化。 變數是型別安全的。 使用C#將會使開發人員更加輕易的開發和維護各種商業應用。
    提供內建的版本支援來減少開發費用
    軟體系統中的元件(模組)將會是一種容易產生錯誤的工作,在程式碼修改過程中可能對現存的軟體產生影響。為了幫助開發人員處理這些問題,C#在語言中內建了版本控制功能。例如:函式過載必須被顯式的宣告(這種情況在C++和JAVA中時常發生),這可以防止程式碼級錯誤和保留版本化的特性。另一個相關的特性是介面和介面繼承的支援。這些特性可以保證複雜的軟體可以被方便的開發和升級。
    總結起來,這些特性可以幫助開發更強壯的軟體後繼版本和減輕開發費用。
    功能強,易於表現,靈活
    更好的結合商業應用中的流程與軟體實現
    為了更好實現公司的各種商業計劃,在軟體系統中必須在商業流程和軟體實現間有緊密的聯絡。但是大多數的開發語言都不能輕易的將各種應用邏輯與程式碼相聯絡。例如,開發人員會使用各種註釋來標明各種類所代表抽象商業物件。C#允許使用在任何物件上使用預定義資料或是經過擴充套件的後設資料。在系統結構中可以使用區域屬性(譯者:類似NT的網路域結構),並且將這些屬性新增到類,介面或者其他元素上。開發者可以獨立的測試各種元素上的屬性。這將會使得一些如同收集區域中物件屬性,或是編寫自動工具來保證的區域中的類,介面是否被正確定義的類似工作變得簡單。
    可擴充套件的協作能力
    雖然管理性強,透明型好,型別安全的開發環境對大多的商業應用都適合,但現實的告訴我們一些應用出於效率或是與現存的應用介面相結合的原因需要使用原有的開發方式來進行編碼。也正是如此,許多C/C++開發人員寧願放棄使用一些可以提高開發效率的開發工具。C#透過下面的方法來解決這些問題:
    內建支援COM模型和平臺API。
    允許有限制的使用指標。
    在C#中任何物件都會自動成為COM物件,開發者不再需要顯式的實現IUnknown和其他一些COM介面,同時也可以方便而自然的使用現存的COM物件,而不需要關心這些COM物件是否使用C#開發。
    對於使用C#的開發人員來講,C#允許開發人員呼叫OS所提供的API。在經過標記的程式碼區域內使用指標並手工管理記憶體分配。這可以讓C/C++開發人員更快的熟悉和轉向C#和並且不需要放棄在以前開發中所形成的開發習慣,而且以前的C/C++程式碼依然可以被重用。無論是對於COM的支援還是對於API呼叫的支援都是為了為開發人員提供足夠的開發控制能力。


  2. C#和Java
    二者都編譯成跨平臺的,跨語言的程式碼,並且程式碼只能在一個受控制的環境中執行
    自動回收垃圾記憶體,並且消除了指標(在C#中可以使用指標,不過必須註明unsafe關鍵字)
    都不需要頭,所有的程式碼都被“包(package)”限制在某個範圍內,並且因為沒有標頭檔案,所以消除了類定義的迴圈依賴
    所有的類都是從物件派生出來,並且必須使用New關鍵字分配記憶體
    用物件加鎖的方式來支援多執行緒
    都具有介面(interface)的概念
    繼承類的時候不會以某種特定的訪問來繼承?
    沒有全域性函式或者常量,一切必須屬於類?
    陣列或者字串都自帶長度計算和邊界檢查?
    只使用“.”運算子,沒有“->”和“::”?
    “null”,“boolean”和“bool”成為了關鍵字?
    任何變數均在使用前進行初始化?
    不能使用整數來返回到if條件語句中,必須使用布林值?
    “Try”模組後可以有“finally” ?
總之,C#是一種先進的,物件導向的開發語言,並且能夠方便快捷的MS網路平臺建立各種應用和建立能夠在網路間相互呼叫的WEB服務。從開發語言的角度來講C#可以更好幫助開發人員避免錯誤,提高工作效率,而且同時具有C/C++的強大功能。

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

相關文章