C#從0到1:語法詳解與案例實踐
洪錦魁
相關主題
商品描述
目錄大綱
目 錄
第1章 C#和Visual Studio1
1-1 認識C#2
1-1-1 C#的起源2
1-1-2 認識C#的開發者2
1-2 認識.NET3
1-2-1 .NET是什麽3
1-2-2 .NET的版本演變3
1-2-3 認識.NET Framework、.NET
Core、.NET3
1-3 C#從編譯到執行的概念4
1-3-1 傳統程序從編譯到執行4
1-3-2 認識微軟.NET的跨平臺
概念4
1-4 認識/下載/安裝Visual Studio5
1-4-1 認識Visual Studio的版本5
1-4-2 下載Visual Studio6
1-4-3 安裝Visual Studio6
1-4-4 安裝Visual Studio其他
模塊6
1-4-5 卸載Visual Studio6
1-5 方案、項目和程序6
1-5-1 認識方案、項目和程序6
1-5-2 方案、項目和C#程序的默
認擴展名7
1-5-3 本書所設計的方案重點7
1-6 控制台的應用程序類7
1-7 本書的項目內容8
1-8 創建、關閉與打開方案實例8
1-8-1 創建控制台應用程序 .NET
Framework 4.8方案8
1-8-2 關閉方案9
1-8-3 打開方案10
1-9 創建 .NET 7.0的方案10
1-9-1 創建控制台應用程序 .NET 7.0
的方案10
1-9-2 創建Windows Forms方案11
1-10 查看方案文件夾12
1-10-1 查看 .NET Framework 4.8
的ch1_1方案 12
1-10-2 查看創建控制台應用程序
.NET 7.0的ch1_2方案13
1-10-3 查看Windows Forms的
ch1_3方案13
1-10-4 方案和項目有相同的名稱13
1-10-5 方案和項目在相同的文件夾
15
第2章 設計第一個C#程序17
2-1 解析 .NET Framework的C#語言
結構18
2-1-1 先前準備工作18
2-1-2 引用命名空間的類18
2-1-3 C#的基本結構19
2-1-4 類class19
2-1-5 Main( )函數19
2-1-6 方案ch2_2 - C#程序的體驗20
2-1-7 執行方案20
2-2 解析 .NET 7.0的C#語言結構20
2-2-1 準備方案ch2_321
2-2-2 網址參考與批註符號21
2-2-3 隱式using引用命名空間22
2-2-4 Main( )不見了23
2-2-5 轉換成Program.Main樣式
程序23
2-2-6 執行C# 的方案23
2-3 不使用頂級語句24
2-4 認識C# 的可執行文件24
第3章 數據類型與變量26
3-1 變量名的使用27
3-1-1 認識C#語言的變量27
3-1-2 認識不需事先聲明變量的
程序語言28
3-2 變量的聲明28
3-2-1 基本概念28
3-2-2 var變量的聲明29
3-2-3 GetType( )29
3-3 基本數據類型30
3-4 整數數據類型30
3-4-1 整數基本概念30
3-4-2 整數數據類型的屬性32
3-4-3 不同進制的整數32
3-4-4 千位分隔符33
3-4-5 整數的後綴字符33
3-4-6 sizeof( )33
3-5 浮點數數據類型34
3-5-1 浮點數基本概念34
3-5-2 浮點數數據類型的屬性35
3-5-3 浮點數的後綴字符35
3-5-4 科學記數法35
3-5-5 千位分隔符36
3-5-6 sizeof( )36
3-5-7 認識float和double的NaN和無限大36
3-6 字符數據類型37
3-6-1 使用sizeof( )函數列出字符長度37
3-6-2 設定字符的常值37
3-6-3 輸出一般符號38
3-6-4 轉義字符38
3-7 字符串數據類型39
3-7-1 字符串內含有轉義字符40
3-7-2 @字符與字符串40
3-7-3 撰寫多行字符串40
3-8 布爾值數據類型41
3-9 object數據類型41
3-9-1 object數據類型41
3-9-2 Value Type數據類型41
3-9-3 裝箱42
3-9-4 拆箱42
3-9-5 拆箱/裝箱與泛型42
3-10 dynamic數據類型43
3-11 變量的默認值default43
3-12 數據類型的轉換44
3-12-1 隱式轉換44
3-12-2 顯式轉換45
3-13 const常量46
3-14 與null46
3-15 值數據類型與引用數據類型47
3-16 匿名數據類型47
第4章 表達式與運算符49
4-1 程序設計的專有名詞50
4-1-1 程序代碼50
4-1-2 表達式50
4-1-3 運算符與操作數50
4-1-4 操作數也可以是一個表達式50
4-1-5 指定運算符51
4-1-6 C# 語言可以一次指定多個運算符為相同的值51
4-1-7 單元運算符51
4-1-8 二元運算符51
4-1-9 三元運算符52
4-2 算術運算52
4-2-1 基礎算術運算符號52
4-2-2 負號( - )運算53
4-2-3 運算符優先級54
4-2-4 程序代碼指令太長時的分行處理55
4-3 不同數據類型混合應用56
4-3-1 整數和字符混合使用56
4-3-2 開學了學生買球鞋56
4-4 遞增和遞減表達式56
4-5 復合表達式57
4-5-1 復合表達式基礎57
4-5-2 新版C# 空合並賦值運算符58
4-6 專題59
4-6-1 圓周率59
4-6-2 計算圓柱體積60
第5章 位運算62
5-1 Convert.ToString( )方法63
5-2 位運算基礎概念63
5-2-1 基礎位運算63
5-2-2 復合式位運算64
5-3 & 運算符64
5-4 | 運算符65
5-5 ^ 運算符66
5-6 ~ 運算符66
5-7 << 運算符67
5-8 >> 運算符67
5-9 運算符優先級68
第6章 輸入與輸出70
6-1 Console.WriteLine( )71
6-1-1 輸出字符串71
6-1-2 參數是字符串和對象71
6-1-3 字符串插補71
6-1-4 格式化數字的輸出72
6-1-5 格式化日期與時間的輸出72
6-1-6 格式化預留輸出空間與對齊方式73
6-1-7 格式化貨幣符號輸出74
6-1-8 控制台輸出顏色控制74
6-1-9 設計控制台窗口大小75
6-1-10 取得並設定光標的位置75
6-2 Console.Write( )76
6-3 Console.Read( )/Console.ReadKey( )/
Console.ReadLine( )76
6-3-1 Console.Read( )76
6-3-2 Console.ReadKey( )77
6-3-3 Console.ReadLine( )77
6-4 其他常用的屏幕方法77
6-5 數據的轉換78
6-5-1 讀取數據時使用Parse( )轉換
78
6-5-2 讀取數據時使用TryParse( )轉換79
6-5-3 Convert類的方法79
6-6 日期格式的轉換80
6-7 Math類81
6-7-1 Math類的數學常數81
6-7-2 Math類的三角函數81
6-7-3 Math類常用的方法82
6-8 專題83
6-8-1 銀行存款復利的計算83
6-8-2 價值衰減的計算83
6-8-3 計算地球到月球所需時間83
6-8-4 計算坐標軸兩個點之間的
距離84
6-8-5 房屋貸款問題實操84
6-8-6 使用反餘弦函數計算圓周率85
6-8-7 雞兔同籠 — 解聯立方程式85
第7章 程序的流程控制89
7-1 關系運算符90
7-2 邏輯運算符90
7-3 完整C#運算符優先級表91
7-4 if語句92
7-5 if … else語句93
7-6 if … else if … else語句94
7-7 與流程控制有關的特殊表達式95
7-7-1 e1 e2 : e3 特殊表達式95
7-7-2 特殊表達式96
7-8 switch 語句96
7-9 goto 語句98
7-10 專題99
7-10-1 BMI指數計算99
7-10-2 閏年計算99
7-10-3 判斷成績並輸出適當的字符串100
7-10-4 十二生肖系統100
7-10-5 火箭升空101
7-10-6 簡易的人工智能程序 — 職場興趣方向測驗101
7-10-7 輸出每個月有幾天102
7-10-8 is和is not關鍵詞102
第8章 程序的循環設計106
8-1 for循環107
8-1-1 單層for循環107
8-1-2 for語句應用到無限循環中109
8-1-3 雙層或多層for循環110
8-1-4 for循環指標遞減設計111
8-2 while循環112
8-2-1 單層while循環112
8-2-2 while語句應用到無限循環113
8-2-3 雙層或多層while循環113
8-3 do … while循環114
8-3-1 單層do … while循環114
8-3-2 do … while語句的無限循環116
8-3-3 雙層或多層do … while循環
116
8-4 循環的選擇116
8-5 break語句117
8-6 continue語句118
8-7 隨機數Random類118
8-7-1 創建隨機數對象119
8-7-2 隨機數方法Next( )119
8-7-3 隨機數種子119
8-8 休息方法120
8-9 專題120
8-9-1 計算平均成績和不及格
人數120
8-9-2 猜數字游戲121
8-9-3 認識歐幾里得算法121
8-9-4 計算圓周率122
8-9-5 雞兔同籠 — 使用循環
計算123
8-9-6 國王的麥粒123
8-9-7 離開無限循環並結束程序的Ctrl + C鍵124
8-9-8 銀行賬戶凍結124
8-9-9 自由落體125
8-9-10 羅馬數字125
8-9-11 定時器設計125
第9章 數組130
9-1 一維數組131
9-1-1 基礎概念131
9-1-2 數組的聲明131
9-1-3 數組聲明與初始值設定132
9-1-4 讀取一維數組的輸入133
9-1-5 一維數組的應用實例133
9-1-6 一維數組的方法134
9-1-7 object數組134
9-2 二維數組135
9-2-1 基礎概念135
9-2-2 二維數組的初始值設定135
9-2-3 二維數組的應用實例136
9-2-4 二維數組與匿名數組136
9-2-5 二維數組的應用解說137
9-3 更高維的數組138
9-3-1 基礎概念138
9-3-2 三維或更高維數組的應用
解說138
9-4 匿名數組138
9-5 foreach遍歷數組139
9-6 Array類140
9-6-1 Array類的屬性140
9-6-2 Array類的方法140
9-6-3 清除數組內容Clear( )141
9-6-4 Copy( )方法141
9-6-5 GetLength( )/GetLowerBound( )/
GetUpperBound( )141
9-6-6 SetValue( )/GetValue( )142
9-6-7 IndexOf( )142
9-6-8 Reverse( )/Sort( )142
9-6-9 BinarySearch( )143
9-7 不規則數組143
9-7-1 基礎概念143
9-7-2 聲明不規則數組144
9-7-3 聲明不規則數組並設定
初始值144
9-7-4 不規則數組與匿名數組145
9-8 排序原理與實操145
9-8-1 排序的概念與應用146
9-8-2 排序實操147
9-9 專題148
9-9-1 斐波那契數列148
9-9-2 二維數組乘法149
9-9-3 4 × 4魔術方塊150
9-9-4 基礎統計151
9-9-5 不規則數組的專題152
第10章 字符和字符串的處理158
10-1 字符Char類159
10-2 字符Char類常用的方法159
10-2-1 與字符有關的方法159
10-2-2 判斷數字和字母的方法160
10-2-3 判斷大小寫字母的方法160
10-2-4 判斷符號的方法160
10-2-5 判斷是不是標點符號的方法
161
10-3 字符數組與字符串161
10-4 字符串String類162
10-4-1 基礎概念162
10-4-2 字符串的屬性Length162
10-4-3 定義null或空字符串162
10-4-4 const關鍵詞應用到字符串163
10-4-5 字符串連接“+”符號163
10-4-6 字符串引用163
10-5 字符串String類常用的方法164
10-5-1 與字符串有關常用的方法164
10-5-2 更改字符串字母大小寫165
10-5-3 首字母大寫的轉換165
10-5-4 字符串結合Concat( )165
10-5-5 字符串比較166
10-5-6 字符串截取Substring( )167
10-5-7 回傳字符串出現的索引位置
167
10-5-8 回傳是否包含特定字符串Contains( )167
10-5-9 字符串替換Replace( )168
10-5-10 字符串分割Split( )168
10-5-11 刪除字符串前後的空格符
Trim( )168
10-5-12 移除字符串指定內容
Remove( )169
10-5-13 字符串是否由特定內容
開始或結尾169
10-5-14 格式化字符串Format( )169
10-5-15 插入字符串Insert( )169
10-5-16 填充字符170
10-5-17 IsNullOrEmpty( )和IsNull
OrWhiteSpace( )170
10-6 StringBuilder類171
10-6-1 創建StringBuilder字符串變量171
10-6-2 StringBuilder字符串變量的屬性172
10-7 StringBuilder類常用的方法172
10-7-1 與字符串有關常用的方法172
10-7-2 將StringBuilder字符串轉為String字符串ToString( )172
10-7-3 清除字符串Clear( )173
10-7-4 將指定內容加到對象末端Append( )173
10-7-5 將指定內容插入對象Insert( )
173
10-7-6 內容替換Replace( )174
10-8 專題174
10-8-1 判斷是不是輸入英文字母174
10-8-2 模擬輸入賬號和密碼175
10-8-3 創建字符串數組然後輸出鍵值175
10-8-4 計算句子各類字符數175
10-8-5 字符串比較與object175
第11章 集合178
11-1 認識.NET的集合179
11-2 System.Collections命名空間179
11-3 動態數組ArrayList179
11-3-1 創建ArrayList對象179
11-3-2 ArrayList的常用屬性180
11-3-3 ArrayList的常用方法180
11-3-4 初始化ArrayList對象元素內容180
11-3-5 遍歷ArrayList對象181
11-3-6 增加元素Add( )和AddRange( )
181
11-3-7 插入元素Insert( )182
11-3-8 是否包含特定元素Contains( )
182
11-3-9 刪除元素Clear( )/Remove( )/
RemoveAt( )/RemoveRange( )
182
11-3-10 回傳元素出現的位置Index
Of( )/LastIndexOf( )183
11-3-11 元素重新排列Sort( )/
Reverse( )184
11-4 哈希表184
11-4-1 創建哈希表對象184
11-4-2 哈希表的常用屬性184
11-4-3 哈希表的常用方法184
11-4-4 增加元素Add( )185
11-4-5 初始化哈希表185
11-4-6 遍歷哈希表185
11-4-7 遍歷鍵/遍歷值186
11-4-8 查詢鍵/值Contains( )/Contains
Key( )/ContainsValue( )186
11-4-9 清除哈希表的元素Clear( )/Remove( )187
11-5 專題187
11-5-1 設計星座密碼187
11-5-2 哈希表依照鍵排序188
第12章 函數的應用190
12-1 函數的體驗191
12-1-1 基礎概念191
12-1-2 轉換成Program.Main樣式程序192
12-2 函數的主體192
12-2-1 函數聲明192
12-2-2 函數中傳遞參數的設計192
12-2-3 函數中不同類型的參數設計
193
12-3 函數的回傳值return194
12-3-1 整數回傳值的應用194
12-3-2 浮點數回傳值的應用194
12-3-3 字符回傳值的應用195
12-3-4 return讓程序提早結束195
12-4 一個程序有多個函數的應用195
12-4-1 簡單的調用195
12-4-2 函數間的調用195
12-4-3 函數是另一個函數的參數196
12-5 遞歸函數的調用197
12-5-1 從掉入無限遞歸說起197
12-5-2 非遞歸設計階乘數函數198
12-5-3 從一般函數進化到遞歸
函數199
12-5-4 遞歸後記201
12-6 數組數據的傳遞201
12-6-1 傳遞數據的基礎概念201
12-6-2 數組的傳遞201
12-6-3 函數調用 — 數據交換使用ref參數202
12-6-4 函數調用 — 回傳數據用關鍵詞out203
12-6-5 函數調用 — 只讀關鍵詞in
203
12-6-6 函數調用 — 可變動數量參數params204
12-6-7 傳遞二維數組數據204
12-6-8 匿名數組205
12-7 命令行的輸入206
12-7-1 Main( )方法206
12-7-2 頂級語句方法207
12-8 全局變量與局部變量207
12-9 Expression-Bodied Method208
12-10 dynamic函數與參數208
12-11 專題209
12-11-1 設計質數測試函數209
12-11-2 抽獎程序設計209
12-11-3 使用遞歸方式設計斐波那
契數列210
12-11-4 設計歐幾里得算法函數
210
第13章 C# 結構數據struct215
13-1 結構數據類型216
13-1-1 基本概念216
13-1-2 存取修飾詞217
13-2 聲明結構變量217
13-2-1 聲明結構變量方法217
13-2-2 使用結構成員217
13-3 創建結構數據217
13-3-1 讀取數據218
13-3-2 初始化結構數據218
13-4 將結構對象的內容設置給另一個
結構對象218
13-5 嵌套的結構219
13-6 C# 結構struct的特色220
13-7 new創建結構對象221
13-8 結構數據與數組221
13-9 struct的建構方法222
13-10 數據封裝 — 結構的set
和get222
13-11 readonly字段223
13-12 with關鍵詞224
13-13 專題224
13-13-1 找出最高分學生的姓名
和分數224
13-13-2 平面坐標系統225
第14章 列舉enum227
14-1 定義列舉enum的數據類型聲明
變量228
14-2 定義列舉enum元素的整數值229
14-2-1 定義enum從元素1開始編號229
14-2-2 定義列舉enum元素數值不連續230
14-2-3 不規則定義列舉enum
元素值231
14-3 列舉的轉換231
14-4 專題231
14-4-1 enum的使用目的231
14-4-2 百貨公司折扣232
第15章 日期和時間235
15-1 DateTime的建構方法與屬性236
15-1-1 創建DateTime對象236
15-1-2 取得DateTime對象屬性236
15-1-3 基礎屬性的認識237
15-1-4 TimeOfDay/DayOfWeek/DayOfYear237
15-1-5 Now/UtcNow237
15-1-6 刻度數Ticks238
15-2 ToString( )方法與輸出日期與時間
格式238
15-3 DateTime的方法239
15-3-1 日期加法相關函數的應用240
15-3-2 日期比較相關函數的應用240
15-3-3 月份的天數DaysInMonth( )
241
15-3-4 是否閏年IsLeapYear( )241
15-3-5 長/短日期與時間格式和字
符串241
15-3-6 解析時間與日期字符串242
15-4 文化特性CultureInfo類243
15-4-1 取得目前操作系統的文化名稱243
15-4-2 日期與時間格式243
15-5 TimeSpan建構方法與屬性244
15-5-1 TimeSpan建構方法244
15-5-2 TimeSpan的屬性244
15-6 DateTime和TimeSpan的混合應用
245
15-7 TimeSpan類常用的方法246
15-7-1 時間間隔加法Add( )246
15-7-2 時間間隔減法Subtract( )247
15-7-3 解析字符串為時間間隔Parse( )
和TryParse( )247
15-8 專題248
15-8-1 var與運算符應用在Date
Time和TimeSpan類中248
15-8-2 設計一個休息秒數函數248
15-8-3 設計一個時鐘249
第16章 類與對象251
16-1 認識對象與類252
16-2 定義類與對象253
16-2-1 定義類253
16-2-2 聲明並創建類對象255
16-3 類的基本實例255
16-3-1 創建類的字段255
16-3-2 存取類的成員255
16-3-3 不使用頂級語句創建含類的方案256
16-3-4 命名空間、頂級語句與插入類257
16-4 值型與引用型258
16-5 類的方法260
16-6 一個類含多個對象的應用260
16-6-1 一個類含多個對象的應用260
16-6-2 創建類的對象數組261
16-7 再談方法261
16-7-1 基本參數的傳送261
16-7-2 認識形參與實參262
16-7-3 方法的回傳值263
16-8 變量的有效範圍263
16-8-1 for循環的索引變量263
16-8-2 局部變量264
16-8-3 類內成員變量與方法變量
有相同的名稱264
16-9 部分類265
16-10 專題266
16-10-1 計算面積266
16-10-2 創建並輸出員工數據266
16-10-3 Expression-Bodied Method
當作類的方法266
16-10-4 匿名類267
第17章 對象的建構、屬性與封裝
269
17-1 建構方法270
17-1-1 默認的建構方法270
17-1-2 自建建構方法271
17-1-3 再談this關鍵詞271
17-1-4 析構方法272
17-2 重載273
17-2-1 從Console.WriteLine( )看重載定義273
17-2-2 把重載應用到建構方法274
17-2-3 把重載應用在一般方法中275
17-2-4 認識方法簽名276
17-3 類成員的訪問權限 — 封裝276
17-3-1 基礎概念276
17-3-2 類成員的訪問控制277
17-3-3 設計具有封裝效果的程序278
17-4 屬性成員278
17-4-1 基本概念278
17-4-2 表達式主體方法應用到屬性中279
17-4-3 自動實操屬性279
17-4-4 自動屬性初始值設定279
17-4-5 屬性初始化280
17-4-6 為屬性增加邏輯判斷280
17-5 類的只讀和常數字段280
17-5-1 const應用在類字段中281
17-5-2 只讀281
17-6 靜態關鍵詞282
17-6-1 類中的靜態字段282
17-6-2 類中的靜態方法283
17-6-3 靜態類283
17-6-4 靜態建構方法284
17-6-5 擴展方法284
17-7 索引器285
17-8 專題286
17-8-1 建構方法與數學類的應用286
17-8-2 銀行存款與提款286
17-8-3 將static用於NBA球員人數統計287
17-8-4 星期信息轉成索引287
第18章 繼承與多態289
18-1 繼承290
18-1-1 從3個簡單的C# 程序談起290
18-1-2 繼承的語法291
18-1-3 觀察父類建構方法的調用292
18-1-4 父類屬性為public時子類
初始化父類屬性293
18-1-5 父類屬性為private時調用父類建構方法 — 關鍵詞this293
18-1-6 存取修飾符protected295
18-1-7 將字段改為屬性概念296
18-1-8 分層繼承296
18-1-9 多層次繼承297
18-1-10 繼承類型總結與陷阱298
18-1-11 父類與子類有相同的成員
變量名稱299
18-2 IS-A和HAS-A關系300
18-2-1 IS-A關系與is300
18-2-2 HAS-A關系 — 聚合301
18-2-3 HAS-A關系 — 組合302
18-3 對C# 程序代碼太長的處理303
18-4 多態304
18-4-1 編譯時多態305
18-4-2 重寫305
18-4-3 new關鍵詞306
18-4-4 重寫使用virtual和override
307
18-4-5 運行時多態307
18-5 靜態綁定與動態綁定308
18-6 嵌套類308
18-7 sealed類309
18-7-1 把sealed應用在類中309
18-7-2 把sealed應用在方法中310
18-8 專題310
18-8-1 薪資計算310
18-8-2 面積計算310
18-8-3 多態的應用311
18-8-4 重寫ToString( )311
第19章 抽象類314
19-1 使用抽象類的場合315
19-2 抽象類基本概念316
19-3 抽象方法的基本概念317
19-4 抽象類與抽象方法概念整理318
19-5 抽象類的建構方法319
19-6 運行時多態應用到抽象類中319
19-7 專題320
19-7-1 數學計算320
19-7-2 正方形面積計算320
19-7-3 多態應用 — 數組概念擴充計算不同外形面積程序321
第20章 接口323
20-1 認識接口324
20-1-1 基本概念324
20-1-2 使用upcasting實現接口325
20-1-3 為什麽使用接口325
20-2 接口實例326
20-2-1 兩個類實現一個接口326
20-2-2 多層次繼承與實現326
20-2-3 接口方法內含參數327
20-3 顯式實現327
20-4 接口屬性實現328
20-5 多重繼承與實現328
20-6 虛擬接口方法330
20-7 專題331
20-7-1 接口有相同的抽象方法331
20-7-2 事務歷史記錄331
20-7-3 將虛擬接口方法應用在交通工具上331
第21章 認識泛型334
21-1 從重載定義說起335
21-1-1 交換函數Swap( )335
21-1-2 object數據類型335
21-2 認識泛型336
21-2-1 基礎應用336
21-2-2 泛型函數—參數是數組337
21-3 泛型類337
21-4 泛型類—字段與屬性338
21-4-1 定義泛型類—內含一個字段338
21-4-2 定義泛型類—內含一個屬性339
21-4-3 定義泛型類—內含多種數據類型339
21-4-4 定義泛型類—內含數組字段340
21-5 泛型類—方法340
21-5-1 泛型方法的參數是泛型340
21-5-2 泛型方法內有一般參數341
21-5-3 泛型方法的數據類型是泛型
341
21-6 含有泛型方法的一般類342
21-7 泛型方法重載342
21-7-1 一般類中的泛型方法重載342
21-7-2 泛型類中的泛型方法重載343
21-8 專題343
21-8-1 創建數組與輸出數組343
21-8-2 模擬棧操作343
第22章 泛型集合345
22-1 System.Collections.Generic346
22-2 List列表346
22-2-1 創建List對象346
22-2-2 List的屬性347
22-2-3 List方法347
22-3 Stack棧348
22-3-1 創建Stack對象348
22-3-2 Stack的屬性349
22-3-3 Stack方法349
22-4 Queue隊列350
22-4-1 創建Queue對象350
22-4-2 Queue的屬性350
22-4-3 Queue方法351
22-5 LinkedList鏈表351
22-5-1 創建LinkedList對象351
22-5-2 LinkedList的屬性352
22-5-3 LinkedList方法352
22-6 SortedSet集合353
22-6-1 創建SortedSet對象353
22-6-2 SortedSet的屬性353
22-6-3 SortedSet方法354
22-7 Dictionary集合354
22-7-1 創建Dictionary對象354
22-7-2 Dictionary的屬性355
22-7-3 Dictionary方法356
22-8 SortedList集合357
22-8-1 創建SortedList對象357
22-8-2 SortedList的屬性358
22-8-3 SortedList方法359
22-9 SortedDictionary集合359
第23章 元組(Tuple)362
23-1 元組的功能363
23-2 元組聲明363
23-2-1 早期C# 4.0的Tuple363
23-2-2 C# 7.0至今的Tuple363
23-3 存取元組元素內容363
23-3-1 Item屬性363
23-3-2 Rest屬性364
23-4 創建嵌套元組365
23-5 設定元素名稱365
23-6 元組賦值設定366
23-7 將= =和!=符號用於元組比較366
23-8 把元組當作方法的參數進行傳遞
366
23-9 把元組當作方法的回傳值367
23-10 專題367
23-10-1 到學校的距離367
23-10-2 數據交換程序設計367
23-10-3 計算最大值與最小值368
第24章 程序調試與異常處理370
24-1 程序異常371
24-1-1 一個除數為0的錯誤371
24-1-2 撰寫異常處理程序try-catch
371
24-1-3 try-catch-finally372
24-2 C# 的異常信息373
24-3 設計多組異常處理程序374
24-3-1 常見的異常對象374
24-3-2 設計捕捉多個異常的程序374
24-4 捕捉所有異常375
24-4-1 再談try-catch375
24-4-2 Exception376
24-5 拋出異常376
24-6 創建自己的異常名稱377
24-7 程序調試的典故377
24-8 專題378
24-8-1 函數的參數是null時將產生異常378
24-8-2 銀行密碼長度測試379
24-8-3 溫度異常379
第25章 正則表達式381
25-1 正則表達式基礎382
25-1-1 認識Regex.IsMatch( )方法382
25-1-2 正則表達式基礎382
25-1-3 使用大括號{ }處理重復出現的字符串383
25-1-4 處理市區電話字符串的方式
383
25-1-5 用括號分組384
25-1-6 用小括號處理區域號碼384
25-1-7 使用管道 |384
25-1-8 使用 號做搜尋385
25-1-9 使用*號做搜尋385
25-1-10 使用+號做搜尋385
25-1-11 大小寫忽略RegexOptions.
IgnoreCase385
25-1-12 正則表達式量次的表386
25-2 正則表達式的特殊字符386
25-2-1 特殊字符表387
25-2-2 單一字符使用通配符中的“.”
388
25-2-3 字符分類388
25-2-4 字符分類的^字符388
25-2-5 所有字符使用通配符中的“.*”
388
25-2-6 特殊字符$389
25-2-7 特殊字符^389
25-3 IsMatch( )方法的萬用程序與功能
擴充389
25-4 找出第一個匹配搜尋規則的內容
Regex.Match( )390
25-4-1 搜尋第一次出現的內容390
25-4-2 Match對象的NextMatch( )方法390
25-5 找出所有匹配搜尋規則的內容
Regex. Matches( )391
25-6 字符串修改Regex.Replace( )391
25-7 正則表達式的分割Regex.Split( )
392
25-8 專題393
25-8-1 搜尋A開頭的國際品牌393
25-8-2 電話號碼的隱藏393
25-8-3 刪除英文稱呼393
25-8-4 測試網址是否正確394
25-8-5 信息加密394
第26章 委托396
26-1 認識委托397
26-2 委托操作397
26-2-1 聲明委托397
26-2-2 設計目標方法397
26-2-3 創建委托對象實例並設定目標方法—常見用法398
26-2-4 創建委托對象實例並設定目標方法—簡化用法398
26-2-5 調用委托398
26-2-6 簡單的委托實例398
26-2-7 調整委托指向399
26-3 把委托當作方法的參數400
26-4 多播委托400
26-5 泛型委托401
26-6 匿名方法401
26-6-1 基礎匿名方法401
26-6-2 匿名方法引用外部的變量402
26-6-3 把匿名方法當作參數傳送402
26-7 Func委托402
26-8 Action委托403
26-9 Predicate委托403
第27章 Lambda表達式406
27-1 Lambda表達式定義407
27-2 Lambda基礎語法407
27-2-1 沒有輸入參數的Lambda407
27-2-2 有1個輸入參數的Lambda407
27-2-3 有多個參數的Lambda407
27-3 Lambda基礎實例407
27-3-1 表達式的Lambda407
27-3-2 語句的Lambda408
27-4 Lambda就是委托指定引用的匿名
方法408
27-5 將Lambda表達式轉換成delegate
委托類型409
27-5-1 將Lambda轉成Func委托409
27-5-2 將Lambda轉成Action委托
410
27-6 外在變量對Lambda表達式的影響
410
27-7 專題411
27-7-1 創建產生隨機數的Lambda表達式411
27-7-2 創建計算圓面積的Lambda表達式411
27-7-3 基礎數學運算的Lambda表達式411
27-7-4 創建賬號長度測試411
27-7-5 Lambda應用在篩選數據中412
第28章 事件414
28-1 認識事件415
28-2 第一個C# 事件與處理程序415
28-2-1 聲明一個事件415
28-2-2 設計事件觸發位置415
28-2-3 註冊事件416
28-2-4 第1個事件實例416
28-3 C# 內置的事件處理程序委托417
28-4 傳遞事件數據417
28-5 傳送自定義時間數據418
28-6 專題419
第29章 基礎Windows窗口設計420
29-1 創建新的項目421
29-2 認識Visual Studio窗口環境422
29-2-1 認識Visual Studio窗口422
29-2-2 切換程序設計區內容423
29-2-3 執行方案ch29_1423
29-3 查看ch29_1文件夾424
29-3-1 查看方案文件夾424
29-3-2 查看項目文件夾424
29-3-3 查看可執行文件的文件夾424
29-4 認識主要窗口區域425
29-4-1 從窗體設計模式到窗體程序代碼模式425
29-4-2 從窗體程序代碼設計模式切換回窗體設計模式425
29-4-3 主要窗口顯示更多程序內容425
29-4-4 關閉主要窗口的標簽內容426
29-5 工具箱426
29-5-1 顯示工具箱426
29-5-2 固定工具箱位置426
29-5-3 浮動工具箱427
29-6 新增或刪除窗體427
29-6-1 新增窗體427
29-6-2 刪除窗體428
29-7 窗體屬性428
29-7-1 窗體設計屬性429
29-7-2 窗體雜項Misc429
29-7-3 窗體外觀屬性429
29-7-4 窗體行為433
29-7-5 窗體佈局433
29-7-6 窗口樣式屬性435
29-8 窗體事件435
29-8-1 打開窗體事件的方法435
29-8-2 常見的窗體事件437
29-8-3 輸出對話框437
29-9 解析Windows Forms窗口項目程序437
29-9-1 解析Form1.cs和Form1.Designer.cs438
29-9-2 解析Program.cs439
29-10 在窗體內創建與佈局控件439
29-10-1 創建控件的方法439
29-10-2 使用方法1創建Button 控件實例439
29-10-3 使用方法2創建Label控件440
29-10-4 控件的大小調整440
29-10-5 控件位置的調整440
29-10-6 創建多個相同的控件440
29-10-7 刪除與撤消刪除控件441
29-10-8 對齊窗體中央441
29-10-9 調整水平間距441
29-10-10 調整垂直間距441
29-10-11 多個控件的對齊442
29-11 專題442
29-11-1 用程序設計屬性442
29-11-2 啟動窗口有對話框443
29-11-3 創建多個窗體443
第30章 基礎控件設計445
30-1 控件設定知識的復習446
30-2 Button功能按鈕446
30-2-1 Button常用屬性446
30-2-2 Button常用事件447
30-2-3 Button項目實例447
30-2-4 新增快捷鍵448
30-2-5 Name屬性449
30-2-6 認識事件處理程序的參數object sender449
30-2-7 執行系統應用程序450
30-3 Label標簽451
30-3-1 Label常用屬性451
30-3-2 Label常用事件451
30-3-3 Label項目實例451
30-4 TextBox文本框453
30-4-1 TextBox常用屬性453
30-4-2 TextBox 常用事件454
30-4-3 TextBox顯示文字的實例454
30-4-4 數值轉換的應用455
30-4-5 異常發生456
30-4-6 TextChanged事件實例457
30-4-7 選取文件實例458
30-5 MessageBox消息框458
30-6 RadioButton單選按鈕460
30-6-1 RadioButton常用屬性461
30-6-2 RadioButton 常用事件461
30-6-3 單選按鈕的基礎實例461
30-7 CheckBox復選框463
30-7-1 CheckBox常用屬性463
30-7-2 CheckBox 常用事件463
30-7-3 復選框的基礎實例463
30-8 容器—GroupBox分組框464
30-9 容器—Pane面板控制465
30-10 ListBox清單466
30-10-1 ListBox常用屬性466
30-10-2 使用字符串集合編輯器創建列表466
30-10-3 ListBox常用的方法467
30-10-4 使用程序選取或取消選取項目468
30-10-5 ListBox 常用事件469
30-10-6 綜合應用470
30-11 ComboBox下拉組合框471
30-11-1 ComboBox常用屬性471
30-11-2 ComboBox事件472
30-12 CheckedListBox復選框清單474
30-12-1 CheckedListBox常用屬性474
30-12-2 CheckedListBox常用的
方法474
30-12-3 CheckedListBox事件474
30-13 鼠標事件476
30-13-1 體會鼠標事件實例477
30-13-2 事件的EventArgs e參數477
30-14 鍵盤事件478
30-14-1 KeyDown和KeyUp事件478
30-14-2 KeyPress事件478
第31章 靜態圖像邁向動態圖像設計482
31-1 PictureBox圖片框483
31-1-1 PictureBox常用屬性483
31-1-2 程序設計圖片框位置483
31-1-3 程序設計圖像大小484
31-1-4 加載與刪除圖像484
31-1-5 靜態到動態圖像實例484
31-2 把圖像應用在窗體背景中486
31-3 把圖像應用在Button中486
31-4 內含圖像的標簽487
31-5 ImageList圖像列表487
31-5-1 創建控件與圖像列表關聯487
31-5-2 創建圖像列表內容488
31-5-3 創建動態火柴人488
31-6 Timer定時器控件489
31-6-1 創建控件與圖像列表關聯489
31-6-2 啟動與結束計時功能490
31-6-3 定時器原理490
31-6-4 走馬燈的設計490
31-7 專題490
31-7-1 先前準備工作490
31-7-2 擺翅的蝴蝶491
31-7-3 移動的蝴蝶 — 翅膀沒有擺動491
31-7-4 飛舞的蝴蝶492
第32章 常用的控件494
32-1 ToolTip提示說明495
32-1-1 ToolTip常用屬性495
32-1-2 ToolTip常用方法495
32-2 DateTimePicker日期時間選擇器496
32-2-1 DateTimePicker最重要的屬性Value496
32-2-2 DateTimePicker格式化的屬性Format497
32-2-3 幾個其他常用的屬性498
32-2-4 常使用的事件498
32-2-5 定時器應用499
32-3 MonthCalendar月歷499
32-3-1 MonthCalendar的屬性 — 粗體設定日期499
32-3-2 MaxDate和MinDate屬性501
32-3-3 ShowToday和ShowTodayCircle屬性501
32-3-4 選取日期相關屬性501
32-3-5 日歷常用事件502
32-4 NumericUpDown控件503
32-4-1 NumericUpDown常用屬性503
32-4-2 NumericUpDown常用方法503
32-4-3 NumericUpDown常用事件503
32-4-4 定時器設計503
32-5 共享事件505
32-5-1 用程序代碼處理共享事件505
32-5-2 屬性窗口處理共享事件505
第33章 創建菜單和工具欄507
33-1 MenuStrip菜單508
33-1-1 請創建ch33_1.sln方案508
33-1-2 MenuStrip工具508
33-1-3 創建菜單508
33-1-4 認識菜單509
33-1-5 創建文件菜單509
33-1-6 創建文件同層級的項目509
33-1-7 創建文件的子層級項目509
33-1-8 插入項目分隔線510
33-1-9 插入、移動和刪除項目510
33-1-10 創建更深一層的菜單項511
33-1-11 查看菜單項的Name和Text屬性512
33-1-12 項集合編輯器513
33-1-13 菜單項的屬性514
33-1-14 菜單與事件516
33-2 ContextMenuStrip快捷菜單517
33-2-1 請創建ch33_3.sln方案517
33-2-2 ContextMenuStrip工具517
33-2-3 創建快捷菜單518
33-2-4 將控件與快捷菜單創建關聯518
33-2-5 快捷菜單的實例519
33-3 ToolStrip工具欄520
33-3-1 ToolStrip工具521
33-3-2 在工具欄內創建控件521
33-3-3 控件的屬性設定521
33-3-4 工具欄的屬性522
33-3-5 工具欄實例522
33-3-6 插入標準項523
33-4 StatusStrip狀態欄524
33-4-1 StatusStrip工具524
33-4-2 在狀態欄內創建控件524
33-4-3 控件的屬性設定525
第34章 常用對話框的應用527
34-1 FontDialog字體對話框528
34-1-1 FontDialog工具528
34-1-2 認識默認的FontDialog字體對話框528
34-1-3 激活字體對話框528
34-1-4 字體對話框的回傳值529
34-1-5 字體對話框的ShowColor屬性530
34-2 ColorDialog顏色對話框530
34-2-1 ColorDialog工具530
34-2-2 認識默認的ColorDialog顏色對話框531
34-2-3 激活顏色對話框531
34-2-4 顏色對話框的回傳值531
34-3 OpenFileDialog打開文件對話框532
34-3-1 OpenFileDialog工具533
34-3-2 打開文件對話框的屬性533
34-3-3 打開文件對話框實操533
34-4 SaveFileDialog保存文件對話框534
34-5 RichTextBox富文本框535
34-5-1 認識RTF文件格式535
34-5-2 RichTextBox常用屬性536
34-5-3 RichTextBox 常用方法537
34-5-4 讀取和保存文件537
34-5-5 SelectionChanged事件537
34-5-6 編輯圖文並茂的文件—插入圖片538
34-5-7 RichTextBox編輯程序的設計538
第35章 文件的輸入與輸出541
35-1 認識System.IO命名空間542
35-2 文件夾的操作543
35-2-1 Directory類543
35-2-2 DirectoryInfo類543
35-3 文件的操作544
35-3-1 File類544
35-3-2 FileInfo類545
35-4 總線的輸入與輸出547
35-4-1 總線的輸出547
35-4-2 使用總線讀取文字文件548
35-5 文件復制、刪除與移動實操549
第36章 語音與影片551
36-1 Console.Beep( )552
36-1-1 認識Beep( )參數552
36-1-2 認識Do-Re-Mi的頻率552
36-1-3 創建Do-Re電子琴的鍵盤553
36-2 SystemSounds類553
36-3 SoundPlayer類 — 播放wav文件553
36-3-1 Load( )和LoadAsync( )解說554
36-3-2 Play( )和PlaySync( )解說554
36-3-3 循環播放PlayLooping( )和停止播放Stop( )554
36-4 Windows Media Player — 播放MP3文件555
36-4-1 安裝Windows Media Player工具555
36-4-2 播放MP3文件555
36-5 Windows Media Player — 播放MP4文件556
第37章 LINQ查詢558
37-1 認識LINQ559
37-2 LINQ語法559
37-2-1 認識LINQ表達式559
37-2-2 from/select/where實例560
37-2-3 let實例561
37-2-4 orderby實例561
37-2-5 group … by實例561
37-2-6 group … by/into實例562
37-2-7 join實例562
37-3 LINQ常用方法563
第38章 大型程序 — 多窗體的設計565
38-1 窗體架構566
38-1-1 Program.cs566
38-1-2 Form1.cs566
38-1-3 Form1.Designer.cs567
38-1-4 Form1.resx567
38-2 創建多窗體的項目567
38-2-1 增加窗體567
38-2-2 增加與刪除窗體568
38-2-3 切換顯示窗體568
38-2-4 顯示窗體或程序代碼569
38-3 更改窗體的名稱569
38-3-1 更改Text、Name和文件名稱569
38-3-2 查看Program.cs570
38-4 操作多窗體的方法570
38-4-1 創建窗體對象570
38-4-2 顯示窗體570
38-4-3 隱藏窗體571
38-4-4 簡單多窗體實操571
38-4-5 銀行貸款多窗體的實例571
38-5 創建MDI子窗體573
38-5-1 新增子窗體與窗體的排列573
38-5-2 創建含RichTextBox控件的子窗體573