精通C#5.0

精通C#5.0

本書系統論述了C# 5.0的開發方法、語法知識、程式結構、編程實例及編程技巧。全書共分20章,詳細介紹了如下內容: C#與.NET基礎知識,Visual Studio開發環境的使用,C#語法基礎與應用程式的一般結構,面向對象編程基礎知識,開發控制台應用程式,數據類型轉換與字元串的格式化處理,簡單的數學運算,泛型與集合,變體的套用、調試、糾錯與單元測試,Lambda表達式與LinQ,開發Windows窗體應用程式,WPF基礎知識與常用技術,異步編程,系統信息管理,操作目錄、檔案、流以及序列化技術,訪問資料庫,網路編程,反射技術入門以及互操作性。本書適合作為C#入門讀者的自學圖書,並適合作為相關高校及培訓機構開設C#及.NET技術課程的教材。

基本介紹

  • ISBN:9787302380245
  • 作者:周家安
  • 印次:1-1
  • 裝幀:平裝
  • 印刷日期:2014-11-4
序,前言,目錄,

微軟公司1975年成立,微軟的童年可謂光芒四射,BASIC 語言、Dos、Windows 3.1等不斷地驚艷當時高速發展的資訊時代。在他成長到20歲時(也就是1995年),發布了Windows 95, 隨後的幾年,他達到一個無人可及的頂峰,那些年他幾乎統治了整個IT界和幾乎每個人的生活。又過了19年之後,2014年他迎來了新的掌門人——納德拉(Satya Nadella),面對世界的新技術、新公司、新生活方式的挑戰,感受著來自各方面的壓力,他為公司提出了全新的策略,簡言之就是“移動為先,云為先”。他同時指出: “我堅信,在未來十年,計算將無處不在,智慧型將觸手可及。軟體的進化與新式硬體的普及會在其中起到媒介作用,目前我們在工作和生活中從事和體驗的很多內容都將實現數位化,甚至整個世界也是如此。可聯網設備的數量快速增長、雲環境所能提供的海量計算資源,大數據的洞察力,以及機器學習所獲得的智慧型,諸多因素讓這一切變為可能。”
接近不惑之年的微軟,正在不斷地調整以改變自己——從內部人員到產品線,進而到產品設計理念。現在,微軟的產品線不僅軟體產品異常豐富,而且在硬體領域不斷出擊,從常用的鍵盤、滑鼠到家用遊戲機Xbox、業界最好的體感設備Kinect及隨後推出的Surface RT/Surface Pro。2014年,微軟更是完成了對著名移動廠商Nokia的收購,從而使公司變成了“軟硬” 兼備的公司。微軟目前擁有數十個著名的產品品牌、數百個優秀的產品、數以千計的先進技術、數萬名業界著名人才、數百萬個行業技術解決方案以及數百億美金的現金儲備,這些資源在一個敢於面對變革的新CEO領導下,微軟像一位圍棋高手一樣不斷變換布局迎接全新的21世紀,這個布局的核心就是“移動為先,云為先”,換言之就是“服務+設備”。
筆者從小就是一個非常“Geek”的人,從裝收音機、電視機到給科技雜誌投稿,整天暢想著如科幻小說般的未來,這一切伴隨著我的少年時代。後來逐步學習各種計算機語言和各種IT技術,希望自己能夠修煉成IT界的“絕世高手”。但是我天賦平凡,面對發展迅猛的IT產業,我依然像個無知的孩子,只有不斷地學習新的知識。另一方面,一直以來,在我的內心深處都認為傳道授業、教書育人是一件無上光榮的事情。1996年春天,當Windows 95中文版在中國發布後不久,我加入了微軟公司,我那時的頭銜是“布道師”(Evangelist),雖然不是“老師”,但是我找到了“裝老師”的感覺。從主辦TechEd、PDC(Build),到在微軟研究院和最聰明的科學家一起工作……我在微軟經歷了人生最美好的時光。2000年,我加入了另外一家偉大的“水果”公司……直到2012年,當Windows 8.0 即將發布時,我回到了微軟公司,我的職業生涯和這家偉大的公司重新綁定,我相信我選擇的未來之路!
清華大學出版社是令人敬仰的出版社,選題精準,作風嚴謹。小時候,它就是我尋找計算機和技術“武功秘籍”的地方。隨著移動網際網路的飛速發展,人們的時間被無情的“碎片化”——微信、微博、簡訊、郵件、網頁,等等; 但是我認為要想在技術方面有所作為,踏踏實實地讀書並積極地實踐是最有效的方式。很榮幸受邀為此微軟技術系列圖書撰寫序言,當我看到這些選題和主要內容時,我迫不及待地懇請編輯務必“賜予”我一套圖書,我一定會仔細拜讀,我也會推薦給我的業界好友。
北京的霧霾好像越來越嚴重了,而周末在一個安靜的地方閱讀一本好書,整個人的“小宇宙”會被提升到另一個維度,大有醍醐灌頂、大徹大悟的感覺。希望您也能和我一樣在閱讀這套圖書時找到這樣的美妙感覺……
——夏鵬微軟(中國)有限公司

前言

C#(C Sharp,“#”讀作Sharp)是微軟公司推出的一種完全面向對象、簡單易學、現代化的新型程式語言。經過幾個版本的演化,C#的語法已然變成更加豐富和成熟,並且具有許多其他高級程式設計語言所不具備的特性,如LinQ語法等。
C#與.NET Framework平台高度集成,也就是說,C#編寫的應用程式必須依賴於.NET框架,並可以與如Visual Basic.NET、Visual C++.NET等語言編寫的組件進行互動。 .NET框架向開發者公開龐大的API庫,以幫助開發人員快速構建強大的應用程式。
本書包含了哪些內容
本書的內容基於最新的C#版本(目前為5.0)而展開敘述的,主要涉及以下方面的內容:
  • C#與.NET簡介
  • 開發環境Visual Studio的使用方法與技巧
  • C#語法基礎與應用程式的一般結構剖析
  • 面向對象編程基礎
  • 開發控制台應用程式
  • 數據類型轉換與字元串的格式化處理
  • 簡單的數學運算
  • 泛型與集合
  • 變體的套用
  • 調試、糾錯與單元測試
  • Lambda表達式與LinQ
  • 開發Windows窗體應用程式
  • WPF基礎知識與常用技術
  • 異步編程
  • 系統信息管理
  • 操作對目錄、檔案、流以及序列化技術
  • 訪問資料庫
  • 網路編程
  • 反射技術入門
  • 互操作性

如何使用本書
本書採用通俗易懂的講解風格,儘量避免晦澀難懂的描述,降低初學者的理解難度。同時,書中針對每個知識點都附有簡單示例程式。讀者在閱讀本書的時候,可以先閱讀有關每個知識點的說明,然後將附帶的示例程式動手操作一遍。在完成書中示例代碼後,讀者應該運行一下應用程式,並觀察程式代碼的執行結果,然後思考一下為什麼會得到這樣的結果,不要做完示例就拋在腦後,應當學會舉一反三。
當讀者了解書中的示例後,也可以進行“二次創作”,即適當地將示例代碼進行修改,使其變成一個新的示例。如此一來,一個示例可以變成兩個、三個,甚至更多的示例,讀者從中也學會了如何靈活地運用學到的知識。當然,這對於從未進行過任何程式開發的入門者而言,會有些困難。剛開始的時候,讀者可以抱著嘗試的心態去做,不要在乎付出的勞動是否馬上得到回報,“欲速則不達”,只要堅持不懈,一點一滴地積累和總結,相信每個有志於步入編程殿堂的人都會收穫頗豐。
在學習編寫代碼的過程中,讀者不妨學會多問幾個“為什麼”。例如,這段代碼為什麼要先執行第1行,才能去執行第2行?如果把第1行代碼與第2行代碼調換後會發生什麼?這個程式為什麼要這樣寫?如果不這樣寫又會遇到哪些問題?……這種學習方法有助於初學者形成清晰的思路,養成良好的編程習慣。因為程式代碼都是人寫的,它是事先安排好的一系列指令,交給計算機去執行,程式代碼體現了人的主觀意志,所以在編寫代碼的時候,思路非常重要。有了好的思路,並且在滿足技術條件的情況下,才能開發出優秀的應用程式。若思路不清晰,寫出來的代碼會非常混亂,維護起來也會十分困難。
本書適合我嗎
本書內容側重基礎知識,適合以下讀者對象:
  • 希望通過自學走上編程之路卻不具備基礎知識的讀者
  • 希望從其他程式語言轉向.NET方向的讀者
  • 對C#以及.NET相關技術感興趣的讀者
  • 培訓機構或高等院校學習.NET相關課程的學員

學習本書內容,我能做什麼
C#與.NET框架緊密結合,除了可以開發常見的控制台、Windows應用程式外,還可以用來開發Web應用程式(如網站)、運行在移動平台上(如Windows Phone)的應用程式。另外,通過Mono及相關技術,還可以使用C#.NET來開發運行在Android、iOS等移動終端上的應用程式。
勘誤與支持
由於作者水平有限,編寫時間倉促,書中難免會有一些不妥之處。望讀者不吝指正。
致謝
本書能夠順利完成,離不開親朋好友的鼓勵和支持。感謝眾多網友所給予的肯定,也感謝清華大學出版社給了我一個寫作的機會,感謝盛東亮編輯,在書稿的寫作過程中給予了我極大的幫助和支持。
——作者2014年10月

目錄

第1章準備工作1.1為什麼要編寫程式1.2C#與.NET框架的關係1.3開發工具——VisualStudio1.3.1下載和安裝1.3.2認識VisualStudio1.3.3使用快捷鍵1.3.4放置子視窗1.3.5自動隱藏視窗1.3.6快速啟動1.3.7個性化設定1.4創建第一個應用程式1.5解決方案與項目的關係第2章語法基礎2.1代碼的基本結構2.2命名空間2.2.1為什麼要使用命名空間2.2.2如何訪問命名空間中的成員2.2.3引入命名空間2.3Main入口點2.3.1程式代碼真的從Main方法開始執行嗎2.3.2如何選擇入口點2.4變數與常量2.4.1變數2.4.2變數的生命周期2.4.3常量2.5命名規則2.6運算符2.6.1示例:簡單運算2.6.2示例:自增和自減運算2.6.3示例:位運算2.6.4示例:比較運算符2.7流程控制2.7.1順序執行2.7.2有選擇地執行2.7.3循環往復2.8寫注釋是個好習慣2.9基本的數據類型2.10不要錯過《C#語言規範》文檔第3章面向對象編程3.1類3.1.1欄位3.1.2屬性3.1.3方法3.1.4構造函式與析構函式3.2結構3.3引用類型與值類型3.4ref參數與out參數3.5方法重載3.6靜態類與靜態成員3.7繼承與多態3.7.1可訪問性3.7.2繼承3.7.3注意可訪問性要一致3.7.4隱藏基類的成員3.7.5覆寫基類成員3.7.6如何阻止類被繼承3.8抽象類3.9接口3.9.1定義接口3.9.2接口與多繼承3.9.3實現接口3.9.4顯式實現接口3.10擴展方法3.11委託與事件3.11.1定義和使用委託3.11.2將方法作為參數傳遞3.11.3使用事件3.12枚舉3.12.1使用枚舉類型3.12.2如何獲取枚舉的值列表3.12.3如何取得枚舉各成員的名字3.12.4枚舉的位運算3.13特性3.13.1自定義特性3.13.2如何把特性套用到方法的返回值3.13.3通過反射技術檢索特性3.14數組3.14.1定義數組的幾種方法3.14.2多維數組3.14.3嵌套數組3.14.4複製數組3.14.5反轉數組3.14.6更改數組的大小3.14.7在數組中查找元素3.14.8靈活使用ArrayList類第4章控制台應用程式4.1輸出文本信息4.2獲取鍵盤輸入4.2.1Read方法4.2.2ReadKey方法4.2.3ReadLine方法4.3命令行參數4.4設定控制台視窗的外觀4.5控制台視窗的大小和位置第5章字元串處理與數學運算5.1對象的字元串表示形式5.1.1重寫ToString方法5.1.2擴展方法5.2字元串的串聯與拆分5.2.1使用+運算符來串聯字元串5.2.2使用Join方法拼接字元串數組5.2.3使用Concat方法創建字元串5.2.4使用StringBuilder類來創建字元串5.2.5使用Split方法來拆分字元串5.3轉義字元5.4英文字母的大小寫轉換5.5Parse和TryParse方法5.6查找和修改字元串5.6.1查找索引5.6.2存在性查找5.6.3字元串的增刪改5.6.4填充字元串5.7格式化字元串5.7.1IformatProvider接口5.7.2區域性相關的信息5.7.3實現字元串的格式化5.8字元串的複合格式化5.9生成隨機數5.10Math類與常用的數學運算5.11與日期時間有關的計算第6章類型轉換6.1隱式轉換6.2顯式轉換6.3可以為null的類型6.4引用類型的兼容性轉換6.5類型轉換幫助器6.6自定義轉換第7章泛型、集合與變體7.1泛型類型7.1.1泛型與類7.1.2泛型與接口7.1.3泛型與類型成員7.1.4泛型與委託7.1.5泛型約束7.2集合7.2.1普通集合7.2.2泛型集合7.2.3字典7.3自定義排序7.4變體7.4.1協變與逆變7.4.2類型參數的輸入與輸出7.4.3必不可少的技巧第8章糾錯與單元測試8.1實時糾正語法錯誤8.2代碼調試8.2.1斷點法8.2.2輸出信息法8.3斷言8.4使用日誌檔案8.5異常處理8.6單元測試第9章匿名方法與Lambda表達式9.1匿名方法9.2Lambda表達式9.2.1用於賦值9.2.2用於參數傳遞第10章集成化查詢10.1LINQ基本語法10.1.1對查詢結果類型的巧妙處理10.1.2延遲執行與強制立即執行10.2篩選10.3排序10.4分組10.5更複雜的查詢10.5.1動態創建類型10.5.2聯合查詢10.5.3嵌套查詢第11章Windows窗體應用程式11.1Windows窗體應用程式的基本結構11.1.1客戶區域11.1.2控制項11.1.3應用程式項目11.1.4Windows訊息循環11.1.5演練:手動創建一個Windows應用程式11.2ApplicationContext類11.3窗體設計器11.4控制項的基類——Control11.4.1示例:設定控制項的位置和大小11.4.2示例:設定控制項的前景色和背景色11.4.3示例:調整控制項的Z順序11.5常規控制項11.5.1共享事件處理程式11.5.2製作“用戶登錄”視窗11.5.3CheckBox與RadioButton示例11.5.4使用ListBox控制項呈現對象列表11.5.5自行繪製列表控制項的項11.5.6組合框11.5.7TextBox的自動完成功能11.5.8多視圖列表11.5.9圖像呈現控制項11.5.10實時報告進度11.5.11選擇日期和時間11.5.12規範用戶輸入11.6容器控制項11.6.1在容器內部顯示滾動條11.6.2分組面板11.6.3格線布局面板11.6.4選項卡11.6.5自動排列內容的面板11.7工具列和選單11.7.1工具列11.7.2選單欄11.7.3上下文選單11.7.4自定義承載控制項11.8對話框11.8.1“打開檔案”和“保存檔案”對話框11.8.2字型選擇對話框11.8.3顏色選擇對話框11.8.4自定義對話框11.9用戶控制項11.10自定義控制項第12章WPF應用程式12.1WPF應用程式項目的結構12.2XAML基礎12.2.1XAML命名空間12.2.2代碼隱藏12.2.3標記擴展12.2.4內容屬性12.3依賴項屬性12.3.1定義和使用依賴項屬性12.3.2使用元數據12.3.3使用已註冊的依賴項屬性12.3.4隻讀依賴項屬性12.3.5附加屬性12.4路由事件12.4.1路由策略12.4.2註冊路由事件的類處理程式12.5認識WPF控制項12.5.1Control類12.5.2內容控制項12.5.3輸入控制項12.6數據綁定與視圖呈現12.6.1用於數據綁定的XAML擴展標記12.6.2使用InotifyPropertyChanged接口12.6.3上下文綁定12.6.4綁定轉換器12.6.5數據集合控制項12.6.6數據模板12.6.7數據視圖12.6.8ObservableCollection<T>集合12.7布局12.7.1Panel類12.7.2格線布局(Grid)12.7.3棧布局(StackPanel)12.7.4停靠面板(DockPanel)12.7.5絕對定位(Canvas)12.7.6自動換行(WrapPanel)12.7.7Z順序12.8用戶控制項與自定義控制項12.9樣式與資源12.9.1樣式中的觸發器12.9.2資源的有效範圍12.9.3合併資源字典12.9.4靜態資源與動態資源12.10圖形12.10.1Shape類12.10.2基本圖形12.11動畫12.11.1演示圖板12.11.2簡單動畫與關鍵幀動畫第13章異步編程13.1為什麼要使用異步編程13.2使用Thread類進行異步編程13.3執行緒鎖13.4通過委託執行異步操作13.5並行任務13.5.1啟動簡單的並行任務13.5.2Task與Task<TResult>類13.5.3創建可取消的Task13.6async和await關鍵字第14章系統信息管理14.1管理進程14.1.1管理現有進程14.1.2啟動新進程14.1.3重定向輸入/輸出流14.2管理服務14.3WMI查詢14.4讀取系統參數14.4.1ComputerInfo類14.4.2Environment類14.4.3SystemInformation類14.4.4用於WPF的系統信息類14.5寫入事件日誌第15章檔案與流15.1創建和刪除目錄15.2創建和刪除檔案15.3流15.3.1讀寫檔案15.3.2記憶體流15.4記憶體映射檔案15.5監控檔案系統的變化15.6獨立存儲15.7壓縮與解壓縮第16章序列化與反序列化16.1二進制序列化16.2XML序列化16.2.1簡單實現XML序列化和反序列化16.2.2自定義XML文檔的節點16.3SOAP序列化16.4數據協定16.5JSON序列化第17章訪問資料庫17.1SQLLocalDB與SSDT17.1.1創建和刪除數據服務實例17.1.2在VisualStudio中連線和創建資料庫17.1.3編寫SQL語句17.2示例資料庫17.3連線資料庫17.4ADO.NET基礎17.4.1使用DataReader來讀取數據17.4.2使用DataAdapter填充數據17.4.3使用數據適配器更新資料庫17.4.4參數化查詢17.5LinQtoADO.NET17.6LinQtoSQL17.6.1用DataContext直接執行SQL語句17.6.2動態創建資料庫第18章程式集與反射18.1類庫18.2反射技術基礎18.2.1動態載入程式集18.2.2獲取類型信息18.2.3動態創建類型實例18.2.4動態調用類型成員第19章網路編程19.1Socket編程19.1.1Socket類19.1.2TcpListener類與TcpClient類19.1.3UdpClient類19.2HTTP通信19.2.1HttpWebRequest類與HttpWebResponse類19.2.2WebClient類19.2.3HttpClient類19.3獲取網路接口信息19.4向目標計算機傳送Ping命令19.5用SMTP傳送電子郵件19.6訪問Web服務第20章互操作性20.1調用Win32API函式20.2調用COM組件

相關詞條

熱門詞條

聯絡我們