第1章 計算機和計算機編程:基本概念
1.1 C#是一種面向對象編程語言
1.2 硬件
1.2.1 主存儲器的實質
1.2.2 數(shù)字系統(tǒng)
1.2.3 字節(jié)
1.2.4 文件
1.3 軟件
1.3.1 執(zhí)行C#程序的大致過程
1.3.2 操作系統(tǒng)
1.3.3 編程語言和編譯器
1.3.4 .NET簡介
1.3.5 在.NET中編譯C#源代碼
1.4 小結
1.5 復習題
第2章 你的第一個C#程序
2.1 軟件開發(fā)
2.2 軟件開發(fā)過程
2.3 算法和偽碼
2.4 3個不同的錯誤類型
2.5 面向對象編程:初次體驗
2.5.1 面向過程編程及其先天缺陷
2.5.2 面向對象編程及其優(yōu)點
2.6 軟件重用
2.7 .NET中代碼重用的基本單元:集合
2.7.1 從開發(fā)者角度看集合
2.7.2 從用戶角度看集合
2.8 .NET框架類庫
2.9 C#的歷史和設計目標
2.10 C#背景
2.11 C#的設計目標
2.12 能用C#編寫什么樣的程序
2.13 創(chuàng)建C#程序的原理
2.14 開始編程之前
2.15 選擇文本編輯器
2.16 編寫一個簡單C#程序的7步
2.16.1 打開和使用命令控制臺(第1步)
2.16.2 輸入和保存C#源代碼(第2步)
2.16.3 將源代碼轉換成一個PE(.exe)文件(第3步)
2.16.4 編譯和查找錯誤(第4步)
2.16.5 運行程序(第5步)
2.16.6 驗證輸入(第6步)
2.16.7 慶祝的時刻(第7步)
2.17 源代碼簡短分析
2.18 語法錯誤與編譯器的注釋
2.19 小結
2.20 復習題
2.21 編程練習
第3章 C#導游:第一部分
3.1 簡介
3.2 抽象和封裝
3.2.1 抽象(Abstraction)
3.2.2 封裝(Encapsulation)
3.2.3 學習面向對象編程的一個說明
3.3 一個交互式的Hello World!程序
3.3.1 編寫Hello.cs
3.3.2 Hello.cs程序的基本元素
3.3.3 幾個基本知識
3.4 小結
3.5 復習題
3.6 編程練習
第4章 C#導游:第二部分
4.1 簡介
4.2 SimpleCalculator.cs程序所需元素
4.2.1 SimpleCalculator.cs程序清單
4.2.2 對SimpleCalculator.cs程序的詳細分析
4.3 用方法簡化你的代碼
4.4 方法就是構造塊:用關鍵字private封裝你的Helper方法
4.5 小結
4.6 復習題
4.7 編程練習
第5章 你的第一個面向對象C#程序
5.1 簡介
5.2 詞匯結構
5.2.1 標識符和CaPitaLIcaTioN樣式
5.2.2 字面值
5.2.3 注釋和代碼詮釋
5.2.4 分隔符
5.2.5 操作符
5.2.6 關鍵字
5.3 對電梯模擬的一些思考
5.4 概念、目標和電梯模擬程序方案:為評價電梯系統(tǒng)搜集有用統(tǒng)計數(shù)據(jù)
5.5 面向對象程序的一個實例
5.5.1 程序SimpleElevatorSimulation.cs清單
5.5.2 程序的整體結構
5.5.3 對SimpleElevatorSimulation.cs程序的深入分析
5.5.4 類關系和統(tǒng)一模型語言(UML)
5.6 小結
5.7 復習題
5.8 編程練習
第6章 類型第一部分:簡單類型
6.1 簡介
6.2 概覽C#中的類型
6.2.1 什么是類型
6.2.2 C#:一個強類型化語言
6.2.3 類型的優(yōu)點
6.2.4 C#類型
6.3 簡單類型
6.3.1 概觀簡單類型
6.3.2 整數(shù)類型
6.4 Blipos時鐘
6.4.1 浮點類型
6.4.2 decimal類型
6.4.3 浮點、decimal和整數(shù)值的兼容性
6.4.4 顯式類型轉換
6.4.5 常量:字面值的符號名字
6.4.6 格式化數(shù)字值
6.4.7 bool類型:初步接觸
6.5 小結
6.6 復習題
6.7 編程練習
第7章 類型第二部分:操作符、枚舉器和字符串
7.1 簡介
7.2 算術操作符及數(shù)字表達式
7.3 結合性
7.4 括號和優(yōu)先級
7.5 模操作符(%)
7.6 一元操作符
7.6.1 一元加和一元減
7.6.2 自增和自減操作符
7.7 判斷表達式的類型
7.8 在一個表達式中組合不同的類型
7.9 訪問組件的元數(shù)據(jù):簡介
7.10 枚舉常量
7.11 枚舉器操作符
7.12 轉換
7.13 System.Enum方法
7.14 字符和文本
7.15 char類型
7.16 string類型
7.16.1 string字面值和string對象
7.16.2 逐字字符
7.16.3 使用字符串
7.16.4 在字符串中嵌入格式化數(shù)字
7.16.5 使用字符串
7.17 小結
7.18 復習題
7.19 編程練習
第8章 流程控制第一部分:分支語句及相關概念
8.1 流程控制簡介
8.2 if分支語句
8.2.1 簡單if語句
8.2.2 復合語句
8.2.3 可選else子句
8.3 比較操作符和布爾表達式
8.4 嵌套if語句
8.5 多分支if-else語句
8.6 邏輯操作符
8.6.1 邏輯與(AND)操作符:&&
8.6.2 邏輯或(OR)操作符:||
8.6.3 短路求值和位操作符&與|
8.6.4 位異或操作符:^
8.6.5 邏輯非(NOT)操作符:!
8.7 變量的作用域
8.8 goto語句
8.9 switch語句
8.9.1 switch語句規(guī)則1
8.9.2 switch語句規(guī)則2
8.9.3 switch語句規(guī)則3
8.9.4 switch語句規(guī)則4
8.9.5 使用switch語句
8.10 條件操作符
8.11 小結
8.12 復習題
8.13 編程練習
第9章 流程控制第二部分:迭代語句
9.1 遍歷、分析和生成數(shù)據(jù)序列
9.2 while循環(huán)語句
9.3 do-while循環(huán)語句
9.4 for循環(huán)語句
9.5 跳轉語句break和continue
9.5.1 break語句
9.5.2 continue語句
9.6 結構化編程和結構化的結構
9.7 組合賦值操作符
9.8 嵌套迭代語句
9.9 編程練習
9.10 小結
9.11 復習題
9.12 編程練習
第10章 數(shù)組第一部分:數(shù)組基本知識
10.1 數(shù)組的聲明和定義
10.2 訪問單個數(shù)組元素
10.3 數(shù)組索引越界
10.4 調整基于0的數(shù)組索引
10.5 初始化數(shù)組
10.6 用foreach語句遍歷整個數(shù)組
10.7 System.Array是一個引用類型
10.8 數(shù)組和相等性
10.9 數(shù)組和方法
10.9.1 數(shù)組元素作為方法中的參數(shù)
10.9.2 數(shù)組引用作為方法參數(shù)
10.9.3 克隆數(shù)組對象
10.10 執(zhí)行數(shù)組值相等性比較的方法
10.11 命令行參數(shù)
10.12 使用數(shù)組作為方法的返回值
10.13 引用對象的數(shù)組元素
10.14 數(shù)組作為類中的實例變量
10.15 小結
10.16 復習題
10.17 編程練習
第11章 數(shù)組第二部分:多維數(shù)組——數(shù)組檢索與排序
11.1 多維數(shù)組
11.1.1 二維數(shù)組
11.1.2 鋸齒數(shù)組
11.2 多于二維的數(shù)組
11.3 System.Array的內置方法
11.4 特殊數(shù)組技術
11.5 檢索
11.5.1 順序檢索(Sequential Search)
11.5.2 二分檢索(Binary Search)
11.5.3 用System.Array的IndexOf方法檢索
11.6 小結
11.7 復習題
11.8 編程練習
第12章 類解剖第一部分:靜態(tài)類成員和方法的使用
12.1 類解剖:概覽
12.2 數(shù)據(jù)成員(data member)
12.2.1 實例變量(instance variable)
12.2.2 靜態(tài)變量(static variable)
12.2.3 常量成員(constant member)
12.2.4 只讀成員(readonly member)
12.2.5 聲明數(shù)據(jù)成員:概覽
12.3 函數(shù)成員
12.3.1 方法
12.3.2 靜態(tài)方法(static methods)
12.4 小結
12.5 復習題
12.6 編程練習
第13章 類解剖第二部分: 對象創(chuàng)建和垃圾回收
13.1 實例構造函數(shù)
13.1.1 為什么需要實例構造函數(shù)
13.1.2 使用實例構造函數(shù)
13.1.3 重載實例構造函數(shù)
13.1.4 構造函數(shù)初始化器
13.1.5 私有實例構造函數(shù)
13.2 靜態(tài)構造函數(shù)
13.3 只讀成員(readonly member)
13.4 垃圾回收:自動動態(tài)內存管理
13.4.1 對象如何被廢棄
13.4.2 垃圾回收器的任務
13.4.3 釋放非內存有限資源
13.5 小結
13.6 復習題
13.7 編程練習
第14章 類解剖第三部分: 編寫直觀代碼
14.1 屬性
14.1.1 屬性與存取器和變異器方法
14.1.2 使用屬性提高效率
14.1.3 用屬性實現(xiàn)延遲初始化和惰性更新
14.2 索引器:像數(shù)組一樣使用對象
14.2.1 從索引器所寄居的對象中調用索引器
14.2.2 索引器重載:同一類中的多索引器
14.2.3 避免濫用索引器
14.3 操作符重載
14.4 用戶自定義隱式和顯式轉換
14.4.1 需要用戶自定義轉換的兩種情形
14.4.2 使用非用戶自定義轉換技術
14.4.3 用戶自定義轉換語法
14.4.4 綜合運用用戶自定義和隱式轉換
14.5 嵌套類型
14.5.1 嵌套類的優(yōu)點
14.5.2 簡單嵌套類示例
14.6 小結
14.7 復習題
14.8 編程練習
第15章 名字空間、編譯單元和集合
15.1 自定義名字空間
15.2 全局匿名名字空間
15.3 名字空間和編譯單元
15.4 嵌套名字空間
15.5 名字空間語法
15.6 using指示符的更多知識
15.7 編譯單元、名字空間及集合
15.7.1 將幾個編譯單元編譯成一個集合
15.7.2 重用集合中的名字空間
15.7.3 將名字空間分布到幾個集合中
15.8 應用Ildasm探索集合
15.9 小結
15.10 復習題
15.11 編程練習
第16章 繼承第一部分:基本概念
16.1 繼承的必需性
16.2 繼承基礎知識
16.3 訪問修飾符及繼承
16.3.1 訪問修飾符protected
16.3.2 訪問私有基類成員
16.3.3 internal protected訪問修飾符
16.3.4 C#的訪問修飾符:概覽
16.4 派生類構造函數(shù)
16.5 索引器也能被繼承和覆蓋
16.6 在基類中調用覆蓋函數(shù)
16.7 通過繼承重用.NET框架類庫
16.8 多級派生類
16.9 方法覆蓋及重載原理不同
16.10 小結
16.11 復習題
16.12 編程練習
第17章 繼承第二部分:抽象函數(shù)、多態(tài)及接口
17.1 抽象方法、屬性、索引器及類
17.2 多態(tài)(polymorphism)
17.2.1 后代類的對象具有多個類型
17.2.2 動態(tài)捆綁虛方法和(get,set)存取器
17.2.3 實例學習:使用多態(tài)創(chuàng)建簡單繪圖程序
17.3 丟失和重新獲取類型信息
17.3.1 is操作符
17.3.2 對象類型轉換
17.3.3 as操作符
17.4 最終的基類:System.Object
17.5 隱藏方法
17.6 用new和override關鍵字控制版本
17.7 多重繼承
17.8 接口
17.8.1 定義接口
17.8.2 實現(xiàn)接口
17.8.3 應用接口的一般編程
17.8.4 構建接口層次
17.8.5 接口轉換
17.8.6 覆蓋虛接口
17.8.7 顯式實現(xiàn)接口函數(shù)
17.9 小結
17.10 復習題
17.11 編程練習
第18章 結構
18.1 定義結構
18.2 裝箱和拆箱
18.3 用與不用new關鍵字創(chuàng)建結構
18.4 值類型和引用類型
18.5 小結
18.6 復習題
18.7 編程練習
第19章 異常處理
19.1 異常處理概覽
19.2 沒有try-catch-finally的情形
19.3 try和catch塊
19.4 捕獲函數(shù)調用鏈上端的異常對象
19.5 多重catch塊
19.6 finally塊
19.7 嵌套try塊
19.8 用throw顯式拋出異常
19.9 編寫自定義異常
19.10 小結
19.11 復習題
19.12 編程練習
第20章 代表和事件
20.1 代表
20.1.1 代表數(shù)組及方法調用中作為參數(shù)的代表
20.1.2 組播代表
20.2 事件
20.3 小結
20.4 復習題
20.5 編程練習
第21章 預處理、XML文檔及特性
21.1 預處理程序指令
21.1.1 用#define、#if和#endif排除和包含代碼
21.1.2 #undef:取消定義標識符
21.1.3 #elif和#else
21.1.4 #error和#warning
21.1.5 #region和#endregion
21.1.6 #line
21.2 XML說明文檔
21.3 特性
21.4 小結
21.5 復習題
21.6 編程練習
第22章 文件I/O基礎
22.1 對文件的需要
22.2 流基礎和文件I/O
22.3 文件I/O類概覽
22.4 FileInfo類
22.5 用StreamReader和StreamWriter 進行文本文件輸入和輸出
22.6 用FileStream類進行二進制輸入和輸出
22.7 小結
22.8 復習題
22.9 編程練習
第23章 遞歸基礎知識
23.1 不同方法的待決方法實例
23.2 同一個方法的待決方法實例
23.3 應用遞歸計算n的階乘
23.4 遞歸和迭代
23.5 使用遞歸進行二分檢索
23.6 小結
23.7 復習題
23.8 編程練習
附錄A 復習題和編程練習答案