發表於2024-12-18
作為多本暢銷教材的作者和北京大學*受學生歡迎的計算機老師之一,本書作者延續瞭以往簡潔易懂的語言風格和清晰的邏輯結構,係統地介紹瞭C#的語言機製及其應用。本書也是中國大學MOOC上“C#程序設計”的配套教材,該課程被教育部認定為“2017年國傢精品在綫開放課程”。選擇由本書開始學習C#程序設計,讀者一定會受益匪淺。
目 錄
第1章 C#程序設計簡介 1-1
1.1 C#語言及其環境 1-1
1.1.1 C#的産生與發展 1-1
1.1.2 C#的環境——Microsoft.NET 1-2
1.1.3 C#的特點 1-5
1.1.4 C#和C、C++的比較 1-6
1.1.5 C# 與Java 的比較 1-7
1.2 簡單的C#程序 1-8
1.2.1 Hello World 1-8
1.2.2 C#程序設計快速入門 1-12
1.2.3 對象的三個基本要素 1-16
1.2.4 C#程序的基本構成 1-19
1.3 程序中的輸入輸齣及運算 1-21
1.3.1 控製颱應用程序的輸入輸齣 1-21
1.3.2 Windows應用程序輸入輸齣 1-23
1.3.3 常用的運算 1-24
1.4 開發工具 1-25
1.4.1 .NET Framework SDK及Visual Studio 1-25
1.4.2 使用命令行編譯及運行程序 1-25
1.4.3 輔助工具EditPlus 1-28
1.4.4 輔助工具Visual Studio Code 1-31
1.5 應用程序類型 1-31
1.5.1 Visual Studio建立不同類型的應用程序 1-31
1.5.2 WPF應用程序 1-33
1.5.3 Web應用程序 1-33
1.6 麵嚮對象程序設計的基本概念 1-34
1.6.1 麵嚮對象概述 1-34
1.6.2 對象、類與實體 1-35
1.6.3 封裝、繼承、多態 1-37
1.6.4 麵嚮對象的軟件開發過程 1-38
習題1 1-39
第2章 C#語言基礎 2-1
2.1 數據類型、變量與常量 2-1
2.1.1 數據類型 2-1
2.1.2 標識符、關鍵字 2-4
2.1.3 字麵常量 2-5
2.1.4 變量 2-6
2.1.5 C#編碼慣例與注釋 2-7
2.2 運算符與錶達式 2-11
2.2.1 算術運算符 2-11
2.2.2 關係運算符 2-13
2.2.3 邏輯運算符 2-13
2.2.4 位運算符 2-14
2.2.5 賦值與強製類型轉換 2-14
2.2.6 條件運算符 2-15
2.2.7 運算的優先級、結閤性 2-16
2.3 流程控製語句 2-17
2.3.1 結構化程序設計的三種基本流程 2-17
2.3.2 簡單語句 2-17
2.3.3 分支語句 2-18
2.3.4 循環語句 2-21
2.3.5 跳轉語句 2-26
2.4 數組 2-28
2.4.1 數組的聲明 2-28
2.4.2 數組的初始化 2-31
2.4.3 數組元素的使用 2-32
2.4.4 數組與System.Array 2-33
2.4.5 使用foreach語句訪問數組 2-34
2.4.6 數組應用舉例 2-34
習題2 2-37
第3章 類、接口與結構 3-1
3.1 類、字段、方法 3-1
3.1.1 定義類中的字段和方法 3-1
3.1.2 構造方法與析構方法 3-3
3.1.3 對象的創建與使用 3-4
3.1.4 方法的重載 3-5
3.1.5 使用this 3-7
3.2 屬性、索引器 3-8
3.2.1 屬性 3-9
3.2.2 索引器 3-13
3.3 類的繼承 3-16
3.3.1 派生子類 3-17
3.3.2 字段的繼承、添加與隱藏 3-18
3.3.3 方法的繼承、添加與覆蓋 3-18
3.3.4 使用base 3-20
3.3.5 父類與子類的轉換以及as運算符 3-21
3.3.6 屬性、索引器的繼承 3-23
3.4 修飾符 3-23
3.4.1 訪問控製符 3-24
3.4.2 static 3-29
3.4.3 const及readonly 3-31
3.4.4 sealed及abstract 3-33
3.4.5 new、virtual、override 3-34
3.4.6 一個應用模型——單例(Singleton) 3-38
3.5 接口 3-38
3.5.1 接口的概念 3-38
3.5.2 定義接口 3-39
3.5.3 實現接口 3-41
3.5.4 對接口的引用 3-42
3.5.5 顯式接口成員實現 3-43
3.6 結構、枚舉 3-45
3.6.1 結構 3-45
3.6.2 枚舉 3-47
習題3 3-49
第4章 C#高級特性 4-1
4.1 泛型 4-1
4.1.1 泛型的基本使用 4-1
4.1.2 自定義泛型 4-2
4.2 委托及Lambda錶達式 4-5
4.2.1 委托類型與賦值 4-5
4.2.2 Lambda錶達式 4-13
4.2.3 使用係統定義的Action及Func 4-14
4.3 事件 4-15
4.3.1 事件的應用 4-15
4.3.2 自定義事件 4-16
4.3.3 事件的語法細節 4-19
4.4 異常處理 4-20
4.4.1 異常的概念 4-20
4.4.2 捕獲和處理異常 4-21
4.4.3 創建用戶自定義異常類 4-25
4.4.4 重拋異常及異常鏈接 4-26
4.4.5 算術溢齣與checked 4-28
4.5 命名空間、嵌套類型、程序集 4-29
4.5.1 命名空間 4-29
4.5.2 嵌套類型 4-32
4.5.3 程序集 4-36
4.6 C#語言中的其他成分 4-41
4.6.1 運算符重載 4-41
4.6.2 使用Attribute 4-42
4.6.3 編譯預處理 4-43
4.6.4 unsafe及指針 4-44
4.6.5 C#幾個語法的小結 4-47
習題4 4-47
第5章 基礎類及常用算法 1
5.1 C#語言基礎類 1
5.1.1 .NET Framework基礎類庫 1
5.1.2 Object類 2
5.1.3 簡單數據類型及轉換 6
5.1.4 Math類及Random類 7
5.1.5 DateTime類及TimeSpan類 8
5.1.6 Console類 11
5.2 字符串 11
5.2.1 String類 12
5.2.2 StringBuilder類 13
5.2.3 數據的格式化 15
5.3 集閤類 16
5.3.1 集閤的遍曆 16
5.3.2 List、Stack及Queue類 18
5.3.3 Dictionary及Hashtable類 21
5.3.4 其他集閤類 25
5.4 排序與查找 26
5.4.1 IComparable接口和IComparer接口 26
5.4.2 使用Array類進行排序與查找 27
5.4.3 集閤類中的排序與查找 28
5.4.4 自已編寫排序程序 31
5.5 Linq 34
5.5.1 Linq的基本用法 34
5.5.2 Linq的查詢方法 36
5.6 遍試、迭代、遞歸 38
5.6.1 遍試 38
5.6.2 迭代 40
5.6.3 遞歸 42
習題5 46
第6章 流、文件IO 6-1
6.1 流及二進製輸入輸齣 6-1
6.1.1 流 6-1
6.1.2 使用流進行二進製輸入輸齣 6-5
6.1.3 使用File的二進製功能 6-7
6.1.4 序列化及反序列化 6-7
6.2 文本輸入輸齣 6-10
6.2.1 使用Reader和Writer的文本I/O 6-10
6.2.2 使用File的文本文件功能 6-14
6.2.3 標準輸入輸齣 6-16
6.2.4 應用示例:背單詞 6-16
6.3 文件、目錄、注冊錶 6-18
6.3.1 文件與目錄管理 6-18
6.3.2 監控文件和目錄的改動 6-24
6.3.3 注冊錶 6-27
6. 4 環境參數及事件日誌 6-28
6.4.1 命令行參數 6-28
6.4.2 獲得環境參數 6-30
6.4.3 使用事件日誌 6-31
6. 5 程序的調試、追蹤與測試 6-35
6.5.1 程序的調試 6-35
6.5.2 程序的追蹤 6-37
6.5.3 程序的單元測試 6-39
習題6 6-41
本章介紹C#語言的特點、開發C#程序的基本步驟、C#程序的構成、基本輸入輸齣以及C#的開發工具等。通過本章的學習,可以對C#程序設計有一個初步的認識。
1.1 C#語言及其環境
C#(發音為“C Sharp”)是由Microsoft開發的麵嚮對象的編程語言。它繼承瞭C和C++、Java等語言的優點並且有瞭較大的發展,是迄今為止最為優秀、最為通用的程序設計語言之一。
1.1.1 C#的産生與發展
C#是直接從世界上最成功的計算機語言C和C++繼承而來,又與Java緊密相關。理解C#的産生與發展有助於C#的學習。
1.結構化編程與C語言
C語言的産生標誌著現代編程時代的開始。C語言是20世紀70年代由Dennis Ritchie在基於UNIX操作係統上創建的。在一定意義上,20世紀60年代的結構化編程造就瞭C語言。在結構化編程語言産生之前,大型的程序是很難編寫的。因為往往在編寫大型程序的時候,會由於存在大量的跳轉、調用和返迴很難進行跟蹤調試。結構化的編程語言加入瞭優化定義的控製語句,子程序中采用瞭局部變量和其他的改進,使得這種問題得到瞭解決。C語言是結構化編程語言中最為成功的一種,至今C語言仍用常用的語言之一。
2.麵嚮對象編程與C++語言
C語言還是有它自身的局限性。到瞭20世紀70年代末期,很多項目的代碼長度都接近或者到達瞭結構化編程方法和C語言能夠處理的極限。為瞭解決這個問題,齣現瞭新的編程方法,即麵嚮對象編程(簡稱OOP),程序員使用OOP可以編寫齣更大型的程序。1979年初,Bjarne Stroustrup在貝爾實驗室創造瞭C++。
C++是C的麵嚮對象的版本。對於C程序員,可以方便地過渡到C++,從而進行麵嚮對象的編程。20世紀90年代中期,C++成為廣泛使用的編程語言。
3.網絡的發展與Java語言
隨著網絡的發展,編程語言進入到的下一個主流就是Java。Java的創造工作由1991年在Sun公司開始,其主要發明者是James Gosling。
Java是一種麵嚮對象的語言,它的語法和思想起源於C++。Java最重要的一方麵是具有編寫跨平颱、可移植代碼的能力,Java能夠將一個程序的源代碼轉換到被稱為字節碼的中間語言,實現瞭程序的可移植性。該字節碼在Java虛擬機上被執行。因此,Java程序可移植到有Java虛擬機的任何環境中。由於Java虛擬機相對比較容易實現,所以適用於大部分的環境。
在Java中采用中間語言是很重要的,在其後的C#中采用瞭類似的方案。
4.C#語言的産生
Microsoft公司在20世紀90年代末開發瞭C#,其首席設計師是Anders Heilsberg。
圖 1?1展示瞭C#的傢族史。C#的祖父是C,C#繼承瞭C的語法、關鍵詞和運算符。C#建立在C++定義的對象模型基礎上,並加以改進。
圖 1?1 C#的産生曆史
C#起源於C和C++,並且與Java有許多相似之處,同時C#包含瞭許多創新的特性,這些特性將會在本書中進行詳細的講解。
作為一種優秀的麵嚮對象語言,C#不僅具有封裝、繼承與多態等特性,而且還增加瞭索引、委托、事件、Attribute、Linq等創新性元素。在繼承瞭C++和Java等語言的優點的基礎上,C#代錶瞭程序設計語言演變的一個新階段,這是與現代軟件工程相適應的。
C#語言還利用.NET Framework作為其強大的平颱,使得它在Windows圖形用戶界麵、ASP.Net Web應用、以及ADO.Net數據庫等方麵有廣泛的應用,並且C#已經可以運行在Windows、Linux、Mac OS等平颱上,甚至可以開發跨平颱的手機應用。正因為這樣,C#是目前主流的程序設計語言之一。
從學習的角度,C#語言的基本語法與傳統的C、C++、Java語言有不少的相似性,學習者易於入門,而且使用功能強大的Visual Studio集成開發工具可以進行快速應用開發,因此將C#作為程序設計的教學和開發語言不失為一種好的選擇。
對於學習者而言,選擇一本好的教材至關重要。筆者基於多年程序設計語言的教學經驗,結閤個人的軟件開發實踐,力圖突齣以下特色:
1.在詳細介紹C#語言的語法的同時,還著重講解C#語言的機製,如類的封裝與繼承、類型轉換、參數傳遞、虛方法調用、構造與析構、異常處理、迭代器等,讓學習者知其然,並知其所以然。
2.對於C#的一些新特性,如Lambda、Linq及異步編程等,也進行瞭介紹,使學習者能簡化代碼的書寫、提高開發效率。
3.對C#用到的基本類庫和基本應用,包括集閤、文件、文本界麵、圖形界麵等進行詳細講解,精選大量典型而實用的例子,力圖使學習者觸類旁通,舉一反三。
4.對一些高級應用,如正則錶達式、XML、網絡信息獲取、數據庫訪問、網絡通訊編程等內容也介紹其概念和編程方法,以利於學習者能做齣具有實際應用價值的程序。
本書在內容安排上,大緻可以劃分為四個部分:第一部分介紹瞭C#語言基礎:數據、控製結構、數組、類、接口、結構等;第二部分介紹瞭C#高級特性,如事件、委托、泛型、Linq、運算符重載等;第三部分是C#的基本類及其在.NET應用:工具類、集閤、常用算法、流式文件、文本應用、Windows窗體和控件、圖形用戶界麵;第四部分是C#的高級應用:多綫程、正則錶達式、XML、網絡信息獲取、數據庫訪問、網絡通訊編程等,還專門用一章來講解深入理解C#語言。
本書提供瞭配套的電子資源,包括源代碼、課件、視頻,一些應用實例由於源代碼較長,書中列齣瞭關鍵性代碼,全部的源代碼可以在配套的電子資源中找到。
本書內容和組織方式立足高等學校的教學教材,也可作為計算機技術的培訓教材或自學用書。筆者還在coursera、中國大學慕課等平颱上開設瞭“C#程序設計”慕課(MOOC),本書也適閤作為慕課的配套教材。
本書從第一版以來,得到全國不少師生及慕課學員的意見和建議,在此錶示感謝。對於書中仍然存在的不足,也懇請讀者批評指正。
唐大仕
於北京大學信息科學技術學院
C#程序設計教程(第2版) 下載 mobi pdf epub txt 電子書 格式 2024
C#程序設計教程(第2版) 下載 mobi epub pdf 電子書C#程序設計教程(第2版) mobi epub pdf txt 電子書 格式下載 2024