本書寫給完全沒有編程經驗的初學者。它從最基本的C#語法開始,採用逐步構建的學習方法,一步一步地深入到C#編程的核心概念。當C#語法基礎打紮實後,即進入窗體編程的學習,這樣讀者就有了比較豐富的編程體驗,此時進入委託、執行緒、程式集等深層次概念的學習,便水到渠成、輕鬆易懂。本書針對初學者,因為不太久以前作者也是一個初學者,與初學者思維相近,心靈相通,知道初學者的困惑之處,相信學完此書之後,你不光能牢固地掌握C#的基礎語法,更能深刻地體會到C#的核心思想。
基本介紹
- 書名:叩響C#之門
- 作者:梁斌玉
- ISBN:9787121090899
- 頁數:496頁
- 定價:59.00元(含光碟1張)
- 出版社:電子工業出版社
- 出版時間:2009-7-1
- 開本:16開
前言,目錄,
前言
這是一部花費五年時間寫成的著作,千錘百鍊寫就、心血凝結而成。
這是一部面向初學者的著作,因為寫此書之前我也是一個初學者。正因為如此我懂得初學者在想什麼,懂得初學者需要什麼與初學者思維相近,心靈相通,故能針對初學者的困惑之處著筆。看完這本書你並不能馬上成為絕頂高手,但能幫你快速地掌握編程的基本概念和基本思想,為深入學習打下紮實的基礎。我希望你看完這本書後,再也不用為不知如何踏入編程的殿堂而彷徨,再也不用為書籍中繁多的名詞術語而迷茫,能夠輕鬆地閱讀別人的代碼,踏上高手之路。
之所以說是心血凝結而成,是因為這部著作不但耗費了巨大的時間和精力,而且融入了我多年的學習體會和教學思想。
本書的特點
1.知初學者之需我是一名高中數學教師,在教學過程中我發現,讓學生替我講題往往會收到很好的效果。究其原因,並非學生講得多么精彩,而是學生間的思維層次相同,該學生重點講解之處就是其他學生困惑之處。因此,我在編寫本書時,盡力回想自己學習時的體驗,以己推人,了解初學者的困惑。幸好,我在學習C#之初做了大量的筆記,寫下了不少困惑和感受,這對我編寫本書大有裨益。
2.逐步構建知識學習知識有兩種基本方法,一種方法是先對整體概述,然後逐步細化。如果學習者對所學領域有一定認識,生活中有一定的體驗,就適合這種方法。另一種方法是由最簡單的知識出發,逐步添加內容,最後構建成一個整體。如果學習者對所學領域非常陌生,就適合這種方法。編程,現實生活中沒有體驗,對初學者來說是非常陌生和抽象的事物,所以本書並沒有像其他教材那樣開篇即對.NET框架展開大篇幅論述(成堆的陌生概念會讓人望而生畏,我剛接觸C#時就是這種感覺),而是簡單介紹後就採用逐步構建的方法來學習。對於每個知識點,先指導學習者編寫一些簡單小程式,獲得感性體驗,然後透過現象看本質,講解其背後蘊涵的道理。隨著內容的不斷添加,最終構建成完整的知識體系。
3.例子典型簡單 要想知道蘋果的味道,只需要嘗一口即可,要想學好編程,就要不斷練習。所以本書通過大量貼切的例子來講解概念。這些例子精心構思,巧妙設計,為了一個例子,我常常琢磨數月,以確保它典型、簡單,一目了然。
4.結構編排合理 C#語言體系龐大,知識繁雜,概念互相交叉。為此,我在結構編排上花費了很多心思,理清了概念間的順序,讓這些概念按邏輯順序逐一展現。並且編排中也考慮了讀者的興趣,內容難易交錯,跌宕起伏,讀者一路學習下來,會很有成就感。
5.語言簡潔通順囉里囉唆的行文會妨礙讀者理解,因此每段話都我都追求邏輯連貫,含義準確,千錘百鍊,字字珠璣,絕無半句廢話妨礙讀者思維。為了達到這個目的,一些重要段落常常修改數周方才定稿,一些難講的概念常常花費數月進行構思。我認為花這么多時間是值得的,因為我一個人多花點時間,就可以使成千上萬的讀者節省很多時間。
為什麼寫一本書我要花費如此多的心血?這可能和我是追求完美主義的偏執性格有關,看到不完善的地方就不安心,就有一種非改不可的衝動。時至今日每讀一遍本書,我都會修改很多詞句,覺得還不夠十全十美。今天偶然讀到一句話:“追求完美是浪費生命,追求卓越才是追求成功。”掩卷回思,感悟頗深,感嘆道:此書雖非完美無瑕,應該也可以稱得上卓越了。於是決定先出版這本書,奉獻給讀者,這樣總比放在我的電腦里強百倍,你說是不是?
“文王拘而演周易,仲尼厄而作春秋”,批閱五載,增刪十次,借物明志。
本書的主要內容
本書分為三個部分,共23章。第Ⅰ部分為C#語法基礎,包括第1章至第12章,深入淺出地介紹了C#的變數、運算符和表達式、流程控制、數組、函式、面向對象的編程,以及.NET框架的基本概念等C#編程的初步知識。第Ⅱ部分為Windows編程,包括第13章至15章,詳細描述了Windows窗體編程的方方面面。第Ⅲ部分為.NET進階,包括第16章至第23章,闡述了C#的諸多特性,如:委託與事件、繪圖、檔案和流、字元串和正則表達式、程式集和反射、多執行緒、集合,以及泛型。
本書光碟的內容
Project\第Ⅰ部分 C#語言
該資料夾中包含了3個Visual Studio 2005的解決方案。它們對應著本書第Ⅰ部分的相關案例。
Project\第Ⅱ部分 Windows編程
該資料夾中包含了本書第Ⅱ部分從第13章到第15章的案例。這些案例均為Visual Studio 2005的解決方案。
Project\第Ⅲ部分 .NET進階
該資料夾中包含了本書第Ⅲ部分從第16章到23章的案例。這些案例均為Visual Studio 2005的解決方案。
Project\資源
該資料夾中包含了一些資源檔案,如圖片、圖表等檔案。
(注意:如果您用Visual Studio 2005之前版本的Visual Studio,打開上面這些解決方案的時候會出問題。)
聯繫方式
雖然我力求完美,但智識短淺,謬誤之處難以避免,歡迎讀者批評指正。
最後感謝李永倫先生對本書的審閱,以及為本書早日出版而付出辛勤勞動的所有人士表示衷心的感謝。
梁斌玉
2008年12月
目錄
第Ⅰ部分 C#語法基礎
第1章 初識編程 2
1.1 C#簡介 2
1.2 Visual Studio開發環境 3
1.3 認識程式 4
1.3.1 創建項目 4
1.3.2 編寫代碼 5
1.3.3 運行程式 7
1.4 編譯 7
1.5 二進制 8
1.5.1 二進制轉換為十進制 9
1.5.2 十進制轉換為二進制 10
1.6 數據和記憶體 13
第2章 變數 15
2.1 整型變數 16
2.1.1 聲明整型變數 16
2.1.2 int型變數的取值範圍 20
2.1.3 short型 21
2.1.4 long型 21
2.1.5 無符號型 21
2.1.6 整數類型小結 21
2.1.7 溢出 22
2.2 實數型變數 23
2.3 字元 24
2.3.1 字元和字元串 25
2.3.2 字元型變數和字元串變數 26
2.3.3 字元串的輸出 27
2.3.4 字元串的讀取 27
2.3.5 ASCII編碼和Unicode編碼 28
2.3.6 轉義字元 32
2.3.7 @控制符 33
2.3.8 +運算符 33
2.4 變數的格式化輸出 34
2.5 變數的命名規則 37
2.6 常量 38
2.7 關鍵字(Keyword) 39
2.8 深化練習:交換兩個變數的值 40
第3章 運算符和表達式 43
3.1 算術運算符 44
3.2 自增、自減運算符 46
3.3 賦值運算符 48
3.4 優先權 49
3.5 類型轉換 50
3.5.1 隱式轉換 50
3.5.2 顯式轉換 52
3.5.3 字元串和數值間的轉換 53
第4章 流程控制 55
4.1 算法的概念 56
4.2 順序結構 57
4.3 邏輯表達式 59
4.3.1 關係運算符 59
4.3.2 邏輯運算符 61
4.3.3 布爾變數 63
4.4 選擇結構 64
4.4.1 if語句 64
4.4.2 switch語句 70
4.4.3 條件表達式 73
4.4.4 深化練習:三個變數排序 74
4.5 循環結構 75
4.5.1 while語句 75
4.5.2 do-while語句 80
4.5.3 for語句 82
4.6 break語句和continue語句 84
4.7 循環語句深化練習:分形圖 85
第5章 枚舉、結構體和數組 88
5.1 枚舉 88
5.2 結構體 92
5.3 數組 94
5.3.1 一維數組 94
5.3.2 foreach循環語句 97
5.3.3 二維數組 97
5.3.4 可變數組 99
第6章 函式 101
6.1 為什麼需要函式 101
6.2 定義函式 102
6.3 返回值 105
6.4 參數 107
6.4.1 值傳遞 107
6.4.2 地址傳遞 108
6.4.3 引用型參數(ref) 109
6.4.4 輸出型參數(out) 111
6.4.5 參數匹配 112
6.5 遞歸調用 113
6.6 變數的作用域 116
6.6.1 局部變數 116
6.6.2 程式塊中的局部變數 117
第7章 面向對象編程:類和對象(一) 119
7.1 背景 119
7.2 面向對象的基本概念 120
7.3 定義類 122
7.4 聲明對象 125
7.5 屬性 127
7.6 構造函式 129
7.7 析構函式和垃圾回收 132
7.8 實例演練:Time類 133
第8章 面向對象編程:類和對象(二) 137
8.1 以對象為成員 137
8.2 靜態成員 138
8.2.1 靜態變數 138
8.2.2 靜態函式 141
8.3 常量成員 142
8.3.1 const常量 142
8.3.2 readonly常量 144
8.4 重載(Overload) 146
8.4.1 函式重載 146
8.4.2 構造函式的重載 148
8.4.3 運算符重載 149
8.5 this關鍵字 153
8.6 索引 154
8.7 值類型和引用類型 157
8.7.1 值類型變數 158
8.7.2 引用型變數 159
8.7.3 引用型變數和垃圾回收器 160
8.8 引用符和對象的區別 160
8.9 聲明對象數組 162
8.10 類視圖 162
第9章 面向對象編程:繼承 163
9.1 繼承概述 163
9.2 由基類創建派生類 164
9.3 protected成員 167
9.4 虛函式的重寫 170
9.5 普通函式的隱藏 172
9.6 base關鍵字 173
9.7 抽象類和抽象函式 174
9.8 密封類和密封函式 175
9.9 派生類的構造函式 176
9.10 萬類之源:Object 180
第10章 面向對象編程:多態性 182
10.1 派生類的對象和基類的關係 182
10.2 多態性的概念 182
10.3 多態性的套用 183
10.4 is運算符 186
10.5 向下類型轉換 187
10.6 接口 188
10.7 類關係圖 192
第11章 .NET框架基本概念 193
11.1 如何理解.NET框架 193
11.2 C#和.NET的關係 194
11.3 中間語言 194
11.4 強數據類型 195
11.5 類型的判定 197
11.5.1 sizeof運算符 197
11.5.2 typeof運算符 197
11.5.3 GetType()函式 197
11.5.4 is運算符 198
11.6 命名空間 199
11.7 裝箱和拆箱 202
11.8 對象的相等 204
第12章 異常 208
12.1 異常概述 208
12.2 捕獲異常——try-catch結構 209
12.3 finally塊——try-catch-finally結構 210
12.4 拋出異常——throw語句 211
12.5 .NET中的異常類 212
12.6 異常類的屬性 214
12.7 自定義異常 215
第Ⅱ部分 Windows編程
第13章 Windows窗體編程(一) 218
13.1 窗體(Form) 218
13.2 按鈕(Button) 223
13.3 標籤(Label) 226
13.4 超連結標籤(LinkLabel) 227
13.5 文本框(TextBox) 228
13.6 單選按鈕(RadioButton) 230
13.7 複選框(CheckBox) 231
13.8 數字輸入框(NumericUpDown) 233
13.9 群組框(GroupBox) 235
13.10 面板(Panel) 237
第14章 Windows窗體編程(二) 245
14.1 滑鼠事件處理 245
14.2 鍵盤事件處理 249
14.3 圖形框(PictureBox) 252
14.4 列表框(ListBox) 254
14.5 複選列表框(CheckListBox) 256
14.6 下拉式列表框(ComboBox) 259
14.7 列表視圖(ListView) 261
14.8 樹狀視圖(TreeView) 266
14.9 控制項布局 270
第15章 Windows窗體編程(三) 277
15.1 選單 277
15.1.1 主選單(MainMenu) 277
15.1.2 關聯選單(ContextMenu) 284
15.2 工具列(ToolStrip) 285
15.3 對話框 289
15.3.1 另外儲存為對話框(SaveFileDialog) 289
15.3.2 打開檔案對話框(OpenFileDialog) 291
15.3.3 字型對話框(FontDialog) 293
15.3.4 顏色對話框(ColorDialog) 294
15.3.5 自定義對話框 295
15.4 多文檔界面 296
15.5 Windows窗體類的層次結構 302
第Ⅲ部分 .NET進階
第16章 委託與事件 306
16.1 委託 306
16.2 多播委託 311
16.3 匿名函式 312
16.4 事件處理機制 313
16.4.1 事件處理機制的原理 313
16.4.2 自定義事件 316
第17章 繪圖 321
17.1 概述 321
17.2 像素和坐標系 322
17.3 顏色 322
17.4 Graphics類 324
17.5 畫筆(Pen) 325
17.6 畫刷(Brush) 326
17.7 路徑(Path) 329
17.8 OnPaint()方法 331
17.9 坐標變換 332
17.9.1 平移變換 332
17.9.2 旋轉變換 334
17.9.3 伸縮變換 335
17.9.4 在滾動視窗中繪圖 336
17.10 字型(Font) 341
17.11 顯示圖像 344
17.11.1 Image類 344
17.11.2 Bitmap類 345
17.11.3 Metafile類 346
第18章 檔案和流 348
18.1 檔案系統 348
18.1.1 File類和FileInfo類 348
18.1.2 關於檔案的異常 350
18.1.3 Directory類和DirectoryInfo類 351
18.1.4 Path類 353
18.1.5 Environment類 354
18.2 基於流的檔案操作 356
18.2.1 FileStream類 357
18.2.2 關於流的異常 359
18.2.3 用流讀寫文本檔案 363
18.2.4 用流讀寫二進制檔案 365
第19章 字元串和正則表達式 368
19.1 String類 368
19.1.1 複製字元串 369
19.1.2 比較字元串 371
19.1.3 驗證字元串首尾 373
19.1.4 定位字元或子串 374
19.1.5 截取子串 377
19.1.6 拆分字元串 378
19.1.7 更改大小寫 378
19.1.8 修改字元串 379
19.1.9 插入格式化變數 379
19.2 StringBuilder類 380
19.3 Char類 384
19.4 正則表達式 385
19.4.1 通配符 385
19.4.2 可選字元集 386
19.4.3 或 387
19.4.4 非 388
19.4.5 數量限定符 388
19.4.6 定位符 393
19.4.7 Regex類的函式 395
19.4.8 深化練習:驗證用戶輸入 397
第20章 特性、程式集和反射 398
20.1 特性 398
20.1.1 使用特性 398
20.1.2 自定義特性 400
20.2 程式集 404
20.2.1 認識程式集 405
20.2.2 程式集的結構 412
20.2.3 私有程式集和共享程式集 413
20.2.4 程式集的特性 413
20.3 反射 416
20.3.1 獲取類型信息(Type類) 416
20.3.2 獲取程式集信息(Assembly類) 418
20.3.3 動態載入類型 419
第21章 多執行緒 422
21.1 執行緒的概念 422
21.2 Thread類 423
21.3 執行緒的優先權 427
21.4 執行緒的插入 431
21.5 執行緒的狀態 433
21.6 執行緒的同步 434
21.6.1 執行緒同步的概念 434
21.6.2 互鎖(Interlocked類) 436
21.6.3 管程(Monitor類) 438
21.6.4 互斥體(Mutex類) 443
21.6.5 死鎖 446
21.7 執行緒池 449
第22章 集合 453
22.1 集合概述 453
22.2 Array類 454
22.3 ArrayList類 455
22.4 Stack類 459
22.5 Queue類 461
22.6 SortedList類 463
22.7 Hashtable類 465
第23章 泛型 473
23.1 泛型的概念 473
23.2 泛型集合類 476
23.2.1 List<T>類 477
23.2.2 Stack<T>類 477
23.2.3 Queue<T>類 478
23.3 類型約束 478