本書詳細(xì)介紹了C#程序設(shè)計(jì)的基本環(huán)境、概念、方法和應(yīng)用。內(nèi)容分為C#語言及C#應(yīng)用兩方面:C#語言方面,包括C#基礎(chǔ)語法、面向?qū)ο蟮腃#語言、C#語言高級(jí)特性等; C#應(yīng)用方面,包括工具類、集合、常用算法、流式文件、文本應(yīng)用、Windows窗體和控件、圖形用戶界面、多線程、ADO.NET數(shù)據(jù)庫(kù)應(yīng)用、網(wǎng)絡(luò)通訊編程等。書中也詳細(xì)講解了C#一些新特新如Lambda表達(dá)式、Linq、異步編程以及深入理解C#語言。
本書內(nèi)容詳盡、循序漸進(jìn),既介紹語法,又講解語言機(jī)制,還注重C#的應(yīng)用。本書提供了大量典型實(shí)例,并配套有相關(guān)的電子資源、課件、視頻。
本書內(nèi)容和組織方式立足高等學(xué)校的教學(xué)教材,也可作為計(jì)算機(jī)技術(shù)的培訓(xùn)教材,還可作為Coursera、中國(guó)大學(xué)慕課上C#程序設(shè)計(jì)慕課的配套教材。
作為多本暢銷教材的作者和北京大學(xué)*受學(xué)生歡迎的計(jì)算機(jī)老師之一,本書作者延續(xù)了以往簡(jiǎn)潔易懂的語言風(fēng)格和清晰的邏輯結(jié)構(gòu),系統(tǒng)地介紹了C#的語言機(jī)制及其應(yīng)用。本書也是中國(guó)大學(xué)MOOC上C#程序設(shè)計(jì)的配套教材,該課程被教育部認(rèn)定為2017年國(guó)家精品在線開放課程。選擇由本書開始學(xué)習(xí)C#程序設(shè)計(jì),讀者一定會(huì)受益匪淺。
目 錄
第1章 C#程序設(shè)計(jì)簡(jiǎn)介 1-1
1.1
C#語言及其環(huán)境 1-1
1.1.1
C#的產(chǎn)生與發(fā)展 1-1
1.1.2
C#的環(huán)境Microsoft.NET 1-2
1.1.3
C#的特點(diǎn) 1-5
1.1.4
C#和C、C 的比較 1-6
1.1.5
C# 與Java 的比較 1-7
1.2 簡(jiǎn)單的C#程序 1-8
1.2.1
Hello World 1-8
1.2.2
C#程序設(shè)計(jì)快速入門 1-12
1.2.3
對(duì)象的三個(gè)基本要素 1-16
1.2.4
C#程序的基本構(gòu)成 1-19
1.3 程序中的輸入輸出及運(yùn)算 1-21
1.3.1
控制臺(tái)應(yīng)用程序的輸入輸出 1-21
1.3.2
Windows應(yīng)用程序輸入輸出 1-23
1.3.3
常用的運(yùn)算 1-24
1.4 開發(fā)工具 1-25
1.4.1
.NET Framework SDK及Visual Studio 1-25
1.4.2
使用命令行編譯及運(yùn)行程序 1-25
1.4.3
輔助工具EditPlus 1-28
1.4.4
輔助工具Visual
Studio Code 1-31
1.5 應(yīng)用程序類型 1-31
1.5.1
Visual Studio建立不同類型的應(yīng)用程序 1-31
1.5.2
WPF應(yīng)用程序 1-33
1.5.3
Web應(yīng)用程序 1-33
1.6 面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念 1-34
1.6.1
面向?qū)ο蟾攀?1-34
1.6.2
對(duì)象、類與實(shí)體 1-35
1.6.3
封裝、繼承、多態(tài) 1-37
1.6.4
面向?qū)ο蟮能浖_發(fā)過程 1-38
習(xí)題1 1-39
第2章 C#語言基礎(chǔ) 2-1
2.1 數(shù)據(jù)類型、變量與常量 2-1
2.1.1
數(shù)據(jù)類型 2-1
2.1.2
標(biāo)識(shí)符、關(guān)鍵字 2-4
2.1.3
字面常量 2-5
2.1.4
變量 2-6
2.1.5
C#編碼慣例與注釋 2-7
2.2 運(yùn)算符與表達(dá)式 2-11
2.2.1
算術(shù)運(yùn)算符 2-11
2.2.2
關(guān)系運(yùn)算符 2-13
2.2.3
邏輯運(yùn)算符 2-13
2.2.4
位運(yùn)算符 2-14
2.2.5
賦值與強(qiáng)制類型轉(zhuǎn)換 2-14
2.2.6
條件運(yùn)算符 2-15
2.2.7
運(yùn)算的優(yōu)先級(jí)、結(jié)合性 2-16
2.3 流程控制語句 2-17
2.3.1
結(jié)構(gòu)化程序設(shè)計(jì)的三種基本流程 2-17
2.3.2
簡(jiǎn)單語句 2-17
2.3.3
分支語句 2-18
2.3.4
循環(huán)語句 2-21
2.3.5
跳轉(zhuǎn)語句 2-26
2.4 數(shù)組 2-28
2.4.1
數(shù)組的聲明 2-28
2.4.2
數(shù)組的初始化 2-31
2.4.3
數(shù)組元素的使用 2-32
2.4.4
數(shù)組與System.Array 2-33
2.4.5
使用foreach語句訪問數(shù)組 2-34
2.4.6
數(shù)組應(yīng)用舉例 2-34
習(xí)題2 2-37
第3章 類、接口與結(jié)構(gòu) 3-1
3.1 類、字段、方法 3-1
3.1.1
定義類中的字段和方法 3-1
3.1.2
構(gòu)造方法與析構(gòu)方法 3-3
3.1.3
對(duì)象的創(chuàng)建與使用 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
父類與子類的轉(zhuǎn)換以及as運(yùn)算符 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
一個(gè)應(yīng)用模型單例(Singleton) 3-38
3.5 接口 3-38
3.5.1
接口的概念 3-38
3.5.2
定義接口 3-39
3.5.3
實(shí)現(xiàn)接口 3-41
3.5.4
對(duì)接口的引用 3-42
3.5.5
顯式接口成員實(shí)現(xiàn) 3-43
3.6 結(jié)構(gòu)、枚舉 3-45
3.6.1
結(jié)構(gòu) 3-45
3.6.2
枚舉 3-47
習(xí)題3 3-49
第4章 C#高級(jí)特性 4-1
4.1 泛型 4-1
4.1.1
泛型的基本使用 4-1
4.1.2
自定義泛型 4-2
4.2 委托及Lambda表達(dá)式 4-5
4.2.1
委托類型與賦值 4-5
4.2.2
Lambda表達(dá)式 4-13
4.2.3
使用系統(tǒng)定義的Action及Func 4-14
4.3 事件 4-15
4.3.1
事件的應(yīng)用 4-15
4.3.2
自定義事件 4-16
4.3.3
事件的語法細(xì)節(jié) 4-19
4.4 異常處理 4-20
4.4.1
異常的概念 4-20
4.4.2
捕獲和處理異常 4-21
4.4.3
創(chuàng)建用戶自定義異常類 4-25
4.4.4
重拋異常及異常鏈接 4-26
4.4.5
算術(shù)溢出與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
運(yùn)算符重載 4-41
4.6.2
使用Attribute 4-42
4.6.3
編譯預(yù)處理 4-43
4.6.4
unsafe及指針 4-44
4.6.5
C#幾個(gè)語法的小結(jié) 4-47
習(xí)題4 4-47
第5章 基礎(chǔ)類及常用算法 1
5.1
C#語言基礎(chǔ)類 1
5.1.1
.NET Framework基礎(chǔ)類庫(kù) 1
5.1.2
Object類 2
5.1.3
簡(jiǎn)單數(shù)據(jù)類型及轉(zhuǎn)換 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
數(shù)據(jù)的格式化 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類進(jìn)行排序與查找 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
習(xí)題5 46
第6章 流、文件IO 6-1
6.1 流及二進(jìn)制輸入輸出 6-1
6.1.1
流 6-1
6.1.2
使用流進(jìn)行二進(jìn)制輸入輸出 6-5
6.1.3
使用File的二進(jìn)制功能 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
標(biāo)準(zhǔn)輸入輸出 6-16
6.2.4
應(yīng)用示例:背單詞 6-16
6.3 文件、目錄、注冊(cè)表 6-18
6.3.1
文件與目錄管理 6-18
6.3.2
監(jiān)控文件和目錄的改動(dòng) 6-24
6.3.3
注冊(cè)表 6-27
6. 4
環(huán)境參數(shù)及事件日志 6-28
6.4.1
命令行參數(shù) 6-28
6.4.2
獲得環(huán)境參數(shù) 6-30
6.4.3
使用事件日志 6-31
6. 5
程序的調(diào)試、追蹤與測(cè)試 6-35
6.5.1
程序的調(diào)試 6-35
6.5.2
程序的追蹤 6-37
6.5.3
程序的單元測(cè)試 6-39
習(xí)題6 6-41
第7章 Windows窗體及控件 7-1
7.1
Windows窗體應(yīng)用程序概述 7-1
7.1.1
Windows圖形用戶界面 7-1
7.1.2
創(chuàng)建Windows窗體 7-2
7.1.3
添加控件 7-5
7.1.4
設(shè)定布局 7-8
7.1.5
事件處理 7-13
7.2 常用控件 7-17
7.2.1
Control類 7-17
7.2.2
標(biāo)簽與按鈕 7-20
7.2.3
文本框 7-24
7.2.4
列表框、UpDown控件 7-27
7.2.5
滾動(dòng)條、進(jìn)度條 7-33
7.2.6
定時(shí)器、時(shí)間、日歷類 7-34
7.2.7
圖片框 7-36
7.2.8
其他幾個(gè)控件 7-37
7.3 一些容器類控件 7-39
7.3.1
Panel控件 7-39
7.3.2
ImageList控件 7-40
7.3.3
TreeView控件 7-41
7.3.4
ListView控件 7-43
7.3.5
TabControl控件 7-47
7.3.6
使用Spliter控件 7-48
7.4 窗體及對(duì)話框 7-48
7.4.1
Form類 7-48
7.4.2
窗體的創(chuàng)建 7-50
7.4.3
使用Form作對(duì)話框 7-51
7.4.4
通用對(duì)話框 7-53
7.4.5
顯示消息框 7-55
7.5
MDI窗體、菜單、工具欄 7-57
7.5.1
MDI窗體 7-57
7.5.2
菜單 7-57
7.5.3
使用主菜單及上下文菜單 7-59
7.5.4
工具欄 7-60
7.5.5
狀態(tài)欄 7-61
7.5.6
一個(gè)綜合的例子 7-62
習(xí)題7 7-74
第8章 繪圖及圖像 8-1
8.1 繪圖基礎(chǔ)支持類 8-1
8.1.1
位置及大小 8-1
8.1.2
顏色 8-4
8.1.3
畫筆 8-5
8.1.4
刷子 8-9
8.2 繪圖 8-11
8.2.1
Graphics類 8-11
8.2.2
獲得Graphics對(duì)象 8-13
8.2.3
進(jìn)行繪圖的一般步驟 8-14
8.2.4
坐標(biāo)變換 8-17
8.2.5
處理重繪和無效操作 8-21
8.2.6
繪圖示例 8-22
8.3 字體 8-28
8.3.1
Font類 8-28
8.3.2
使用字體來繪制文本 8-29
8.4 圖像 8-32
8.4.1
與圖像相關(guān)的類 8-32
8.4.2
在窗體上顯示圖像 8-34
8.4.3
窗體、圖片框上的圖標(biāo)及圖像 8-36
8.4.4
圖像處理 8-37
8.5 在自定義控件中使用繪圖 8-42
8.5.1
自定義控件 8-42
8.5.2
在自定義控件中使用繪圖 8-45
習(xí)題8 8-48
第9章 文本、XML及網(wǎng)絡(luò)信息獲取 9-1
9.1 文本及正則表達(dá)式 9-1
9.1.1
文本命名空間 9-1
9.1.2
正則表達(dá)式 9-2
9.1.3
應(yīng)用示例:播放歌詞 9-6
9.2
XML編程 9-11
9.2.1
XML概念 9-11
9.2.2
XML基本編程 9-13
9.2.3
Linq to XML 9-18
9.3 網(wǎng)絡(luò)信息獲取 9-20
9.3.1
網(wǎng)絡(luò)信息獲取 9-20
9.3.2
WebRequst及WebClient 9-22
9.4 幾類不同網(wǎng)絡(luò)信息的處理 9-24
9.4.1
使用正則表達(dá)式處理網(wǎng)絡(luò)文本 9-24
9.4.2
從網(wǎng)絡(luò)上獲取XML并進(jìn)行處理 9-29
9.4.3
從網(wǎng)絡(luò)上獲取Json并進(jìn)行處理 9-30
9.4.4
從網(wǎng)絡(luò)上獲取二進(jìn)制信息并進(jìn)行處理 9-33
習(xí)題9 9-34
第10章 多線程及異步編程 10-1
10.1
線程基礎(chǔ) 10-1
10.1.1
多線程的相關(guān)概念 10-1
10.1.2
線程的創(chuàng)建與控制 10-2
10.1.3
線程的同步 10-7
10.2
線程池與計(jì)時(shí)器 10-13
10.2.1
線程池 10-13
10.2.2
線程計(jì)時(shí)器 10-14
10.2.3
窗體計(jì)時(shí)器 10-16
10.3
集合與Windows程序中的線程 10-16
10.3.1
集合的線程安全性 10-16
10.3.2
窗體應(yīng)用程序中的線程 10-18
10.4
并行編程 10-22
10.4.1
并行程序的相關(guān)概念 10-22
10.4.2
Task 10-22
10.4.3
Parallel類 10-24
10.4.4
并行Linq 10-28
10.5
異步編程 10-29
10.5.1
async及await 10-29
10.5.2
異步I/O 10-31
10.5.3
其他實(shí)現(xiàn)異步的方法 10-33
習(xí)題10 10-36
第11章 數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、多媒體編程 11-1
11.1
ADO.NET數(shù)據(jù)庫(kù)編程 11-1
11.1.1
ADO.NET簡(jiǎn)介 11-1
11.1.2
數(shù)據(jù)集 11-2
11.1.3
連接到數(shù)據(jù)源 11-5
11.1.4
使用DataAdapter和DataSet 11-7
11.1.5
使用Command和DataReader 11-9
11.1.6
使用數(shù)據(jù)綁定控件 11-10
11.2 使用高級(jí)數(shù)據(jù)工具 11-12
11.2.1
使用Visual
Studio的數(shù)據(jù)工具 11-12
11.2.2
使用Entity
Framework 11-13
11.2.3
使用Linq訪問數(shù)據(jù)庫(kù) 11-14
11.3
網(wǎng)絡(luò)通訊編程 11-15
11.3.1
使用System.Net 11-15
11.3.2
TcpClient及TcpListener 11-17
11.3.3
Email編程 11-22
11.4
互操作與多媒體編程 11-24
11.4.1
C#、VB.NET、JScript的互操作 11-24
11.4.2
使用Win32 API進(jìn)行聲音播放 11-26
11.4.3
使用COM組件操作Office文檔 11-28
11.4.4
使用ActiveX控件進(jìn)行多媒體播放 11-29
習(xí)題11 11-30
第12章 深入理解C#語言 12-1
12.1
類型及轉(zhuǎn)換 12-1
12.1.1
值類型及引用類型 12-1
12.1.2
值類型的轉(zhuǎn)換 12-4
12.1.3
引用類型轉(zhuǎn)換 12-4
12.1.4
裝箱與拆箱 12-6
12.2
變量及其傳遞 12-9
12.2.1
字段與局部變量 12-9
12.2.2
按值傳遞的參數(shù) 12-10
12.2.3
ref參數(shù)及out參數(shù) 12-12
12.2.4
params參數(shù) 12-15
12.2.5
變量的返回 12-16
12.3
多態(tài)與虛方法調(diào)用 12-16
12.3.1
上溯造型 12-17
12.3.2
虛方法調(diào)用 12-17
12.4
類型與反射 12-21
12.4.1
typeof及GetType 12-21
12.4.2
is運(yùn)算符 12-23
12.4.3
反射及動(dòng)態(tài)類型創(chuàng)建 12-24
12.5
對(duì)象構(gòu)造與析構(gòu) 12-26
12.5.1
調(diào)用本類或父類的構(gòu)造方法 12-26
12.5.2
構(gòu)造方法的執(zhí)行過程 12-28
12.5.3
靜態(tài)構(gòu)造方法 12-31
12.5.4
析構(gòu)方法與垃圾回收 12-33
12.4.5
顯式資源管理與IDisposable 12-34
12.6
運(yùn)算符重載 12-36
12.6.1
運(yùn)算符重載的概念 12-36
12.6.2
一元運(yùn)算符 12-38
12.6.3
二元運(yùn)算符 12-39
12.6.4
轉(zhuǎn)換運(yùn)算符 12-41
12.6.5
==及!=運(yùn)算符 12-42
12.7
特性(Attribute) 12-43
12.7.1
使用系統(tǒng)定義的Attribute 12-44
12.7.2
自定義Attribute 12-46
12.8
枚舉器與迭代器 12-50
12.8.1
枚舉器 12-50
12.8.2
迭代器 12-52
習(xí)題12 12-56
附錄1 C#語言各個(gè)版本的新特性 1
附錄2 C#語言相關(guān)網(wǎng)絡(luò)資源 14
參考文獻(xiàn) 16