• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            COOOOOOOOL

            從固有的原則出發,向著目標誠直前進.所以這樣的行為便名為正當的行為,表示其為尋著正路而行的.

              C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
              26 Posts :: 0 Stories :: 21 Comments :: 0 Trackbacks

            公告

            QQ:774262464 email:cooooooool.2010@gmail.com

            常用鏈接

            留言簿(3)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 72489
            • 排名 - 322

            最新評論

            閱讀排行榜

            評論排行榜

            前言:

            0.1 提要

            歡迎閱讀《展現 C#》(Presenting C#)。這本書是你提高企業編程語言的一條捷徑。這種企業編程語言帶有下一代編程語言服務運行時(NGWS Runtime):C#(發音"C sharp")。

            NGWS Runtime 是一個不僅管理執行代碼、同時也提供使編程更加容易的動態環境。編譯器產生受管代碼以指向這種受管理執行環境。你獲得跨平臺語言集成、跨平臺語言異常處理、增強安全性、版本控制、安排支持和查錯服務。

            支持NGWS Runtime 的主要語言是C#。支持NGWS框架的很多程序是用C#寫的,因此,在一些帶有NGWS Runtime的編譯器中,它的編譯器可以被認為是非常經得起測試且是經過優化的。C#語言借鑒了C++,但是具備現代化和新增的類型安全——使C#成為企業解決方案的首選語言。

            0.2 誰應該讀這本書

            如果你對編程很陌生,這本書不適合你。這本書企圖讓程序員解脫并使用C#,基于他們已經擁有的知識。《展現 C#》的目標瞄準了已經具有如C/C++、VB、Java或其它編程經驗的程序員。

            如果你具有C++的背景,轉向C#會很容易,但是,如果你精通于其它不同的語言,這本書也會耗掉你的一些日子。如果你有一點COM編程的知識,這本會更有趣,但會COM編程不再是必要的。

            0.3 這本書如何組織

            第一章 C#簡介——這一章把你帶到C#逛一回,同時回答了有關你應該考慮學習C#的問題。
                   第二章 NGWS Runtime 的技術基礎——介紹NGWS Runtime為運行的C#代碼所提供的低層架構。
                   第三章 第一個C#應用程序——創建真正第一個C#應用程序(否則它是什么呢?),它就是一個"Hello World"應用程序。
                   第四章 C#類型——可以看到用在C#應用程序中的各種類型。探索值型和引用型的區別,還有如何加框和消框。
                   第五章 類——C#功能真正強大的標志,它是具有類的面向對象的編程。你會學到好多好多的東西,如構造函數、析構函數、方法、屬性、索引和事件等。
                   第六章 控制語句——對應用程序實行流程控制。探索C#提供的各種選擇和陳述語句。
                   第七章 異常處理——獲得了編寫實現異常處理的應用程序技巧,擁有這種技巧,在NGWS Runtime世界,你是一個好的公民
                   第八章 用C#寫組件——用C#構建組件,因為支持NGWS Runtime,它可以被不同語言平臺的客戶使用。
                   第九章 配置和安排——學到如何用C#有條件地進行編譯工作,和如何為你的C#源碼自動地創建文檔。另外,這一章將介紹到NGWS的版本技術問題。
                   第十章 用非受管代碼交互操作——發現你如何使用C#內部的非受管代碼,且非受管代碼如何與你的C#組件一起交互操作。
                   第十一章 C#代碼查錯——獲得使用SDK查錯工具的技巧,可以在應用程序中準確地找到錯誤并修改它們。
                   第十二章 安全——探索NGWS Runtime的安全概念。學到代碼訪問安全性和基于角色的安全性。

            0.4 使用這本書你需要什么?

            從這本書的觀點看,你所需要的就是下一代windows服務軟件開發包(NGWS SDK)。盡管至少只要有NGWS Runtime 和C#編譯器就可以,但當探索這些激動人心的新技術功能 時,在一臺機器上裝有說明文件檔和所有的SDK工具(包括debugger),將是一個極好的主意。
            這本書不需要你裝在機器上的Visual Studio 7的任何工具。我僅建議你要有一個優秀的支持行數的程序編輯器,用以編輯C#源文件。
            ……
            (省略掉一些有關出版過程和表示感謝的段落)

            0.5 關于作者

            Christoph Wille,微軟系統工程師(MCSE)、微軟系統開發師(MCSD)、Netware網絡管理員(CNA)和MCP-IT,作為一個網絡咨詢人員和程序員,特別精通Windows DNA。微軟認為他是ASP方面最有價值的人(MVP),他是和微軟在一起使用早期的C#版本的少數開發者之一。
            Christoph 獨自或參與了幾本書的寫作,包括Sams出版社的《自學ADO2.5 21天》、《自學ASP 24小時》、《自學MCSE TCP/IP 14天》和《MCSE 訓練指南:SQL Server 7管理》。


            第一章 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++多變的類型系統。這種系統充許您把各種類型作為一個對象查看,它是一個原始類型還是一個full-blown 類。和其它編程語言相比,由于加框(boxing)和消框(unboxing)的機制,把簡單類型當作對象處理并不能獲得性能的改善。稍后將詳細解釋加框和消框,但基本上僅當需要時才使用對象訪問簡單類型這種技術。

            首先,老練的程序員可能不喜歡它,但是整型和布爾型如今終歸是兩種完全不同的數據類型。這就意味著原來if語句中錯誤的賦值現在會被編譯出錯,因為if語句只接受布爾類型的值。再也不會出現誤用賦值符為比較符這樣的錯誤?。ㄊ状螌WC#,cnbruce就感受到了,“=”and “==”:)

            C#同時也解決了存在于C++中已經有些年頭的多余東西(redundancies)。這種多余包括常數預定義,不同字符類型等。鑒于多余表單已經從該語言中消失,故一般在C#中都可以使用表單了。


            現代

            您投入學習C#的努力是一筆大投資,因為C#是為編寫NGWS 應用程序的主要語言而設計。您將會發現很多自己用C++可以實現或者很費力實現的功能,在C#中不過是一部分基本的功能而已。

            對于企業級的編程語言來說,新增的金融數據類型很受歡迎。您用到了一種新的十進制數據類型,它專用于金融計算方面。如果不喜歡這種現成簡單的類型,根據您應用程序的特殊需求,可以很容易地創建出新的一種數據類型。

            我已經提到,指針不再是您編程武器的一部分。不要太驚訝,全面的內存管理已經不是您的任務。運行時NGWS提供了一個垃圾收集器,負責C#程序中的內存管理。因內存和應用程序都受到管理,所以很必要增強類型安全,以確保應用的穩定性。

            對于C++程序員,異常處理的切不是新的東西,但它是C#的主要功能。C#的異常處理與C++的不同點在于它是交叉語言的(運行時的另一個功能)。在沒有C#之前,您必須處理怪異的HRESULTs,但現在由于使用了基于異常的健壯的出錯處理, 這一切都 結束了


            對于現代的應用程序,安全是首要的,C#也不會例外。它提供了元數據語法,用于聲明下述NGWS安全模式的能力和許可。元數據是NGWS運行時的一個關鍵的概念,下一章將涉及到它更深的含義。

            面向對象

            您不會預料一種新語言不支持面向對象的功能吧? C#當然支持所有關鍵的面向對象的概念,如封裝、繼承和多態性。完整的C#類模式構建在NGWS運行時的虛擬對象系統(VOS,Virtual Object System)的上層,VOS將在下章描述。對象模式只是基礎的一部分,不再是編程語言的一部分。

            您一開始必須關注的事,就是不再有全局函數、變量或者是常量。所有的東西都封裝在類中,包括事例成員(通過類的事例--對象可以訪問)或都靜態成員(通過數據類型)。這些使C#代碼更加易讀且有助于減少潛在的命名沖突。

            定義類中的方法默認是非虛擬的(它們不能被派生類改寫)。主要論點是,這樣會消除由于偶爾改寫方法而導致另外一些原碼出錯。要改寫方法,必須具有顯式的虛擬標志。 這種行為不但縮減速了虛擬函數表,而且還確保正確版本的控制。

            使用C++編寫類,您可以使用訪問權限(ACCESS modifiers) 給類成員設置不同的訪問等級。C#同樣支持private、protected 和public 三種訪問權限 ,而且還增加了第四種:internal。有關訪問權限 的詳細情況將在第五章 "類" 中說明。

            您曾經創建了多少個類是從多基類派生出來的(ATL 程序員,您的投票不計在內!) ? 大多數情況,僅需從一個類派生出。多基類惹出的麻煩通常比它們解決的問題還多。那就是為什么C#僅允許一個基類。如果您覺得需要多重繼承,可以運用接口。

            一個可能出現的問題:在C#中不存在指針,如何模仿它? 這個問題的答案很有代表性,它提供了對NGWS運行時事件模式的支持。再次,我將把對它的全面解釋放到第五章。

            類型安全

            我再次選指針作為一個例子。在C++中擁有一個指針,您能自由地把它強制轉換成為任何類型,包括干出諸如把一個int*(整型指針)強制轉換成一個double *(雙精度指針)這樣的傻事。只要內存支持這種操作,它就"干過"。這并不是您所想象的企業級編程語言的類型安全。

            綱要性的問題,C#實施最嚴格的類型安全,以保護自己及垃圾收集器(garbage collector)。所以必須遵守C#中一些相關變量的規則:

            您不能使用沒有初始化的變量。對于對象的成員變量,編譯器負責清零。而局部變量,則由您負責清零。當您使用一個沒有初始化的變量時,編譯器會教您怎么做。優點是能夠避免由于使用不經初始化的變量計算結果而導致的錯誤,而您還不知道這些奇怪的結果是如何產生的。

            C#取消了不安全的類型轉換。不能把一個整型強制轉換成一個引用類型(如對象),而當向下轉換時,C#驗證這種轉換是正確的。(也就是說,派生類真的是從向下轉換的那個類派生出來的。)

            邊界檢查是C#的一部分。再也不會出現這種情況:當數組實際只定義了n-1個元素,卻超額地使用了n個元素。

            算術運算有可能溢出終值數據類型的范圍。C#允許在語句級或應用程序級檢測這些運算。在允許檢測溢出的情況下,當溢出發生時將會拋出一個異常。

            在C#中,被傳遞的引用參數是類型安全的。

            版本可控(Versionable)

            在過去的幾年中,幾乎所有的程序員都至少有一次不得不涉及到眾所周知的"DLL地獄"。該問題起因于多個應用程序都安裝了相同DLL名字的不同版本。有時,老版本的應用程序可以很好地和新版本的DLL一起工作,但是更多的時候它們會中斷運行?,F在的版本問題真是令人頭痛。

            就象您將在第八章"用C#寫組件"所看到的,NGWS runtime 將對您所寫的應用程序提供版本支持。C#可以最好地支持版本控制。盡管C#不能確保正確的版本控制,但是它可以為程序員保證版本控制成為可能。有這種支持,一個開發人員就可以確保當他的類庫升級時,仍保留著對已存在的客戶應用程序的二進制兼容。

            兼容

            C#并沒有存在于一個封閉的世界中。它允許使用最先進的NGWS的通用語言規定(Common Language Specification,簡寫為CLS)訪問不同的API。CLS規定了一個標準,用于符合這種標準的語言的內部之間的操作。為了加強CLS的編譯,C#編譯器檢測所有的公共出口編譯,并在通不過時列出錯誤。

            當然,您也想能夠訪問舊一點的COM對象。NGWS運行時提供對COM透明的訪問。如何集成原來的代碼將在第10章"非管理代碼的內部操作"有介紹。

            OLE 自動化是一種特殊的動物。任一個使用C++創建OLE自動化項目的人已經喜歡上各種各樣的自動化數據類型。有個好消息就是C#支持它們,而沒有煩鎖的細節。

            最后,C#允許您 用C 原型的API進持內部操作??梢詮哪膽贸绦蛟L問任何DLL中的入口點(有C的原型)。用于訪問原始API的功能稱作平臺調用服務(Plaform Invocation Services ,縮寫PInovke),第10章將展示使用C API進行內部操作的一些例子。

            靈活

            上一部分的最后一段有可能提醒了程序員。您可能會問:"難道就沒有我要傳遞指針的API嗎?" 您是正確的。不是僅有少數的這種API,而是很多(有點保守的估計)。這種對原始WIN32代碼的訪問有時導致對非安全類指定指針的使用(盡管它們中的一些由于受COM和PInvoke的支持可以解決)。

            盡管C#代碼的缺省狀態是類型安全的,但是您可以聲明一些類或者僅聲明類的的方法是非安全類型的。這樣的聲明允許您使用指針、結構,靜態地分配數組。安全碼和非安全碼都運行在同一個管理空間,這樣暗示著當從安全碼調用非安全碼時不會陷入列集(marshaling)。

            小結

            C#語言從C和C++演變而來,它是給那些愿意犧牲C++一點底層功能,以獲得更方便和更產品化的企業開發人員而創造的。C#現代、簡單、面向對象和類型安全。盡管它借鑒了C和C++的許多東西,但是在一些諸如名字空間、類、方法和異常處理等特定領域,它們之間還存在著巨大的差異。

            C#為您提供了方便的功能,如垃圾收集、類型安全、版本控制,等等。僅有的"代價"就是,代碼操作默認是類型安全的,不允許指針。光是類型安全就可以搞定了。但是,如果您需要指針,仍可以通過非安全碼使用它們,而且當調用非安全碼時,不能含有列集

            posted on 2009-12-15 21:05 COOOOOOOOL 閱讀(201) 評論(0)  編輯 收藏 引用
            国产成人无码精品久久久久免费| 九九热久久免费视频| 久久无码人妻精品一区二区三区| 热久久这里只有精品| 欧美色综合久久久久久| 久久人人爽人人人人爽AV| 久久精品人人槡人妻人人玩AV| 一本伊大人香蕉久久网手机| 欧美久久天天综合香蕉伊| 亚洲AV乱码久久精品蜜桃| 久久久青草久久久青草| 中文字幕精品久久| 久久精品九九亚洲精品天堂| 一极黄色视频久久网站| 亚洲综合久久综合激情久久| 久久人人爽人人爽人人片AV东京热| 久久精品国产免费一区| 伊人久久综合精品无码AV专区| 久久伊人精品青青草原高清| 亚洲av成人无码久久精品| 久久人妻少妇嫩草AV蜜桃| 2022年国产精品久久久久| 亚洲欧洲中文日韩久久AV乱码| 国内精品久久久久伊人av| 中文字幕日本人妻久久久免费 | 久久这里有精品| 久久99精品久久久久久| 亚洲中文字幕无码久久综合网| 国产高潮国产高潮久久久91| 久久人人爽人人爽人人AV| 香蕉久久夜色精品国产尤物| 久久亚洲国产精品123区| 久久天堂电影网| 91久久精一区二区三区大全| 久久人人爽人人爽人人片av麻烦 | 久久亚洲色一区二区三区| 国内精品久久久久伊人av| 亚洲精品无码久久一线| 国产成人精品综合久久久| 18岁日韩内射颜射午夜久久成人| 亚洲精品成人久久久|