主要內容
本書通過大量實例及一個完整項目案例,幫助讀者更好地鞏固所學知識,提升能力;隨書附贈的《小白實戰手冊》中給出了3個流行且實用的案例的詳細開發流程,力求讓學習者能學以致用,真正獲得開發經驗;附贈的光碟中給出視頻講解、實例及項目源碼、代碼查錯器、練一練和動手糾錯答案等,方便讀者學習;書中設定了200多個二維碼,掃描二維碼觀看視頻講解,解決學習疑難;不易理解的專業術語、代碼難點只需手機掃描文字下方的e學碼獲得更多擴展解釋,隨時掃除學習障礙。
目錄
第1篇 基礎知識 1
第1章 宇宙第一IDE——Visual Studio 2
1.1 了解軟體 3
1.2 軟體開發相關的概念 4
1.3 C#語言入門 6
1.3.1 C#語言的發展 6
1.3.2 C#語言的特點 7
1.3.3 認識.NET Framework 7
1.3.4 C#與.NET Framework 8
1.3.5 C#的套用領域 8
1.4 Visual Studio 2017的安裝與卸載 10
1.4.1 安裝Visual Studio 2017必備條件 10
1.4.2 安裝Visual Studio 2017 10
1.4.3 卸載Visual Studio 2017 14
1.5 熟悉Visual Studio 2017開發環境 15
1.5.1 創建項目 15
1.5.2 選單欄 17
1.5.3 工具列 17
1.5.4 解決方案資源管理器 18
1.5.5 “工具箱”視窗 18
1.5.6 “屬性”視窗 19
1.5.7 “錯誤列表”視窗 19
1.6 難點解答 20
1.6.1 學習C#編程必須安裝Visual Studio開發環境嗎? 20
1.6.2 學習C#的網站 20
1.7 小結 20
第2章 踏上C# 開發的征程 21
2.1 編寫第一個C#程式 22
2.2 C#程式結構預覽 24
2.2.1 命名空間 25
2.2.2 類 27
2.2.3 關鍵字與標識符 28
2.2.4 Main方法 29
2.2.5 C#語句 30
2.2.6 注釋 32
2.2.7 一個完整的C#程式 34
2.3 程式編寫規範 35
2.3.1 代碼編寫規則 36
2.3.2 命名規範 36
2.4 難點解答 38
2.4.1 區分常見的3種項目類型 38
2.4.2 為什麼要使用注釋? 39
2.5 小結 41
2.6 動手糾錯 41
第3章 必須學會的C#語法 43
3.1 為什麼要使用變數 44
3.2 變數是什麼 44
3.3 變數的聲明及初始化 45
3.3.1 聲明變數 45
3.3.2 簡單數據類型 46
3.3.3 變數的初始化 55
3.3.4 變數的作用域 57
3.4 常量 59
3.4.1 常量是什麼 59
3.4.2 常量的分類 59
3.5 運算符 61
3.5.2 自增自減運算符 63
3.5.6 位運算符 69
3.6 數據類型轉換 73
3.6.1 隱式類型轉換 73
3.6.2 顯式類型轉換 73
3.6.3 使用Convert類進行轉換 74
3.8 難點解答 77
3.9 小結 78
3.10 動手糾錯 79
第4章 流程控制語句 81
4.1 決策分支 82
4.2 if語句 82
4.2.1 最簡單的if語句 83
4.2.2 if…else語句 85
4.2.3 if…else if…else語句 88
4.2.4 if語句的嵌套 91
4.3 switch多分支語句 93
4.3.1 switch語句 93
4.3.2 switch與if…else if…else的區別 97
4.4 while和do…while循環 97
4.4.1 while循環 97
4.4.2 do…while循環 100
4.4.3 while和do…while語句的區別 101
4.5 for循環 102
4.5.1 for循環的一般形式 102
4.5.2 for循環的變體 103
4.5.3 for循環中逗號的套用 105
4.6 循環的嵌套 105
4.7 跳轉語句 108
4.7.2 continue語句 110
4.8 難點解答 111
4.8.1 3種循環的使用場景 111
4.8.2 continue和break語句的區別 111
4.9 小結 112
4.10 動手糾錯 112
第5章 數組—批量數據處理 113
5.1 數組概述 114
5.2 一維數組 115
5.2.1 一維數組的創建 115
5.2.2 一維數組的初始化 116
5.2.3 一維數組的使用 117
5.3 二維數組 118
5.3.1 二維數組的創建 118
5.3.2 二維數組的初始化 120
5.3.3 二維數組的使用 122
5.3.4 不規則數組的定義 123
5.4 數組與Array類 124
5.5 數組的基本操作 126
5.5.1 使用foreach語句遍歷數組 126
5.5.2 對數組進行排序 128
5.6 難點解答 129
5.6.1 為什麼數組的索引從0開始? 129
5.6.2 如何獲取二維數組的列數? 129
5.7 小結 130
5.8 動手糾錯 130
第6章 看似簡單的字元串 131
6.1 什麼是字元串 132
6.2 字元串的聲明與初始化 132
6.2.1 聲明字元串 132
6.2.2 字元串的初始化 133
6.3 提取字元串信息 134
6.3.1 獲取字元串長度 134
6.3.2 獲取指定位置的字元 134
6.3.3 獲取子字元串索引位置 135
6.3.4 判斷字元串首尾內容 137
6.4 字元串操作 138
6.4.1 字元串的拼接 138
6.4.2 比較字元串 139
6.4.3 字元串的大小寫轉換 141
6.4.4 格式化字元串 141
6.4.5 截取字元串 146
6.4.6 分割字元串 147
6.4.7 去除空白內容 149
6.4.8 替換字元串 150
6.5 可變字元串類 151
6.5.1 StringBuilder類的定義 151
6.5.2 StringBuilder類的使用 152
6.6 難點解答 153
6.6.1 null和""的區別 153
6.6.2 StringBuilder類與string類的區別 153
6.7 小結 154
6.8 動手糾錯 154
第7章 面向對象程式設計 155
7.1 面向對象概述 156
7.1.1 對象 156
7.1.2 類 158
7.1.3 三大基本特徵 158
7.2 類 160
7.2.1 類的聲明 160
7.2.2 類的成員 160
7.2.3 構造函式 164
7.2.4 析構函式 167
7.2.5 許可權修飾符 168
7.3 方法 169
7.3.1 方法的聲明 169
7.3.2 方法的參數 170
7.3.3 方法的重載 172
7.4 類的靜態成員 174
7.5 對象的創建及使用 175
7.5.1 對象的創建 175
7.5.2 對象的銷毀 177
7.5.3 類與對象的關係 178
7.6 繼承 178
7.6.1 繼承的實現 178
7.6.2 base關鍵字 181
7.6.3 繼承中的構造函式與析構函式 183
7.7 多態 183
7.7.1 虛方法的重寫 184
7.7.2 抽象類與抽象方法 186
7.7.3 接口的使用 188
7.8 難點解答 192
7.8.1 ref參數和params參數的使用 192
7.8.2 抽象類與接口的區別 193
7.9 小結 193
7.10 動手糾錯 193
第2篇 核心技術 195
第8章 Windows 互動式圖形界面 196
8.1 開發應用程式的步驟 197
8.2 Form窗體 199
8.2.1 添加和刪除窗體 200
8.2.2 多窗體的使用 201
8.2.3 窗體的屬性 202
8.2.4 窗體的顯示與隱藏 204
8.2.5 窗體的事件 205
8.3 MDI窗體 207
8.3.1 MDI窗體的概念 207
8.3.2 如何設定MDI窗體 208
8.3.3 排列MDI子窗體 209
8.4 難點解答 211
8.4.1 Show方法和ShowDialog方法的區別 211
8.4.2 如何實現MDI窗體不重複打開同一個子窗體? 212
8.5 小結 212
8.6 動手糾錯 213
第9章 Windows 控制項—C/S程式的基礎...215 215
9.1 控制項概述 216
9.2 控制項的相關操作 217
9.2.1 添加控制項 217
9.2.2 對齊控制項 217
9.2.3 刪除控制項 218
9.3 Windows控制項的使用 218
9.3.1 Label控制項 218
9.3.2 Button控制項 219
9.3.3 TextBox控制項 220
9.3.4 RadioButton控制項 221
9.3.5 CheckBox控制項 223
9.3.6 RichTextBox控制項 225
9.3.7 ComboBox控制項 227
9.3.8 ListBox控制項 228
9.3.9 GroupBox控制項 230
9.3.10 ListView控制項 230
9.3.11 TreeView控制項 233
9.3.12 ImageList組件 237
9.3.13 Timer組件 237
9.4 選單、工具列與狀態欄 239
9.4.2 ToolStrip控制項 240
9.4.3 StatusStrip控制項 241
9.5 對話框 243
9.5.1 訊息框 244
9.5.2 打開對話框控制項 245
9.5.3 另外儲存為對話框控制項 246
9.5.4 瀏覽資料夾對話框控制項 247
9.6 難點解答 248
9.6.1 在窗體中看不到可視控制項的原因 248
9.6.2 控制項和組件的區別 249
9.7 小結 249
9.8 動手糾錯 249
第10章 數據訪問技術 251
10.1 ADO.NET概述 252
10.1.1 ADO.NET對象模型 252
10.1.2 數據訪問命名空間 253
10.2 Connection數據連線對象 253
10.2.2 資料庫連線字元串 254
10.2.3 套用SqlConnection對象連線資料庫 255
10.3 Command命令執行對象 256
10.3.2 套用Command對象運算元據 257
10.3.3 套用Command對象調用存儲過程 258
10.4 DataReader數據讀取對象 260
10.4.1 DataReader對象概述 260
10.4.2 使用DataReader對象檢索數據 261
10.5 DataSet對象和DataAdapter操作對象 263
10.5.1 DataSet對象 263
10.5.2 DataAdapter對象 264
10.5.3 填充DataSet數據集 265
10.6 DataGridView控制項的使用 266
10.7 Entity Framework編程基礎 269
10.7.1 什麼是Entity Framework 269
10.7.2 Entity Framework實體數據模型 270
10.7.3 Entity Framework運行環境 270
10.7.4 創建實體數據模型 271
10.7.5 通過EF對數據表進行增刪改查操作 274
10.8 難點解答 276
10.8.1 DataSet對象與DataReader對象的區別 276
10.8.2 EF相對於ADO.NET的優勢 277
10.9 小結 277
10.10 動手糾錯 277
第11章 程式調試與異常處理 279
11.1 程式調試 280
11.1.1 Visual Studio編輯器調試 280
11.1.2 Visual Studio調試器調試 281
11.2 異常處理 285
11.2.1 try…catch語句 286
11.2.2 try…catch…f inally語句 287
11.2.3 throw語句 288
11.3 難點解答 290
11.3.1 使用多個catch時的注意事項 290
11.3.2 異常的使用原則 291
11.4 小結 292
11.5 動手糾錯 292
第3篇 高級套用 293
第12章 I/O 數據流技術 294
12.1 檔案基本操作 295
12.1.1 File類 295
12.1.2 FileInfo類 296
12.1.3 判斷檔案是否存在 297
12.1.4 創建檔案 298
12.1.5 複製檔案 299
12.1.6 移動檔案 299
12.1.7 刪除檔案 300
12.1.8 獲取檔案基本信息 301
12.2 資料夾基本操作 302
12.2.1 Directory類 303
12.2.2 DirectoryInfo類 303
12.2.3 判斷資料夾是否存在 304
12.2.4 創建資料夾 305
12.2.5 移動資料夾 305
12.2.6 刪除資料夾 306
12.2.7 遍歷資料夾 307
12.3 I/O(輸入/輸出) 310
12.3.1 流概述 310
12.3.2 檔案I/O流介紹 311
12.3.3 使用I/O流操作文本檔案 313
12.4 難點解答 316
12.4.1 文本檔案的編碼方式 316
12.4.2 什麼時候使用輸入流?什麼時候使用輸出流? 316
12.5 小結 317
12.6 動手糾錯 317
第13章 GDI+ 繪圖套用 319
13.1 GDI+繪圖基礎 320
13.1.1 GDI+概述 320
13.1.2 Graphics繪圖類 320
13.2 設定畫筆與畫刷 321
13.2.1 設定畫筆 321
13.2.2 設定畫刷 322
13.3 繪製幾何圖形 323
13.3.1 繪製圖形 325
13.3.2 填充圖形 327
13.4 繪製圖像 329
13.5 難點解答 330
13.5.1 解決圖像消失的問題 330
13.5.2 實現圖像特殊效果的通用方法 331
13.6 小結 332
13.7 動手糾錯 332
第14章 Socket 網路編程 333
14.1 計算機網路基礎 334
14.1.1 區域網路與廣域網 334
14.1.2 網路協定 334
14.1.3 連線埠及套接字 336
14.2 IP位址封裝 337
14.3 TCP程式設計 340
14.3.1 Socket類 340
14.3.2 TcpClient類和TcpListener類 342
14.3.3 TCP網路程式實例 343
14.4 UDP程式設計 346
14.4.1 UdpClient類 346
14.4.2 UDP網路程式實例 347
14.5 難點解答 351
14.5.1
TCP協定和UDP協定的區別 351
14.5.2 網路之間可以傳遞哪些數據? 351
14.6 小結 351
14.7 動手糾錯 351
第15章 多執行緒編程技術 353
15.1 執行緒概述 354
15.1.1 執行緒的定義與分類 354
15.1.2 多執行緒的優缺點 355
15.2 執行緒的實現 355
15.2.1 使用Thread類創建執行緒 355
15.2.2 執行緒的生命周期 358
15.3 操作執行緒的方法 359
15.3.1 執行緒的休眠 359
15.3.2 執行緒的加入 361
15.3.3 執行緒的終止 363
15.3.4 執行緒的優先權 364
15.4 執行緒的同步 365
15.4.1 執行緒同步機制 366
15.4.2 使用lock關鍵字實現執行緒同步 367
15.4.3 使用Monitor類實現執行緒同步 369
15.4.4 使用Mutex類實現執行緒同步 371
15.5 難點解答 372
15.5.1 過時的Suspend方法和Resume方法 372
15.5.2 了解執行緒池 373
15.6 小結 373
15.7 動手糾錯 374
第4篇 項目實戰 375
第16章 五子棋大廳遊戲 376
16.1 開發背景 377
16.2 系統功能設計 377
16.2.1 系統功能結構 377
16.2.2 系統業務流程 377
16.3 系統開發必備 378
16.3.1 系統開發環境要求 378
16.3.3 項目目錄結構預覽 379
16.3.4 界面預覽 380
16.4 自定義UDP協定控制項 382
16.5 伺服器窗體設計 386
16.5.1 伺服器窗體概述 386
16.5.2 設計伺服器窗體 386
16.5.3 開始/停止服務 387
16.5.4 設定分數排名方式 387
16.5.5 關閉伺服器 388
16.6 客戶端註冊窗體設計 389
16.6.1 客戶端註冊窗體概述 389
16.6.2 設計客戶端註冊窗體 389
16.6.3 系統載入時獲取本地IP位址 390
16.6.4 在下拉列表中繪製圖片 391
16.6.5 註冊用戶功能的實現 392
16.7 五子棋大廳窗體設計 394
16.7.1 五子棋大廳窗體概述 394
16.7.2 設計五子棋大廳窗體 395
16.7.3 循環播放背景音樂 396
16.7.4 進入指定的房間 396
16.7.5 進入指定的座位 399
16.7.6 區域網路內的公共聊天 402
16.8 遊戲對決窗體設計 403
16.8.1 遊戲對決窗體概述 403
16.8.2 設計遊戲對決窗體 404
16.8.3 開始五子棋對決 405
16.8.4 五子棋算法實現 407
16.8.5 在棋盤上添加雙方的棋子 411
16.8.6 判斷雙方的輸贏 414
16.9 小結 416
附錄 實例索引 417