本書全面系統地論述了C#6.0的開發環境、語法基礎、程序結構、編程技巧及編程案例。全書共包括21章,分別介紹了以下內容:開發環境搭建、語法基礎、面向對象編程、類型轉換、字符串處理與數學運算、控制臺應用程序、變體的應用、集合與泛型、調試與單元測試、Lambda表達式、LINQ查詢語句、Windows窗體應用程序、WPF基礎知識、多線程與異步編程、系統信息管理、文件與流、序列化技術、數據庫訪問技術、反射、網絡編程、互操作性等。在本書最后一章,專門設計了綜合實例——“綜合實例1:照片面積計算機器”和“綜合實例2:文件加密與解密工具”,通過這兩個綜合實例,既可以將前20章的知識融會貫通,又可以拋磚引玉,真正教會讀者開發C#應用程序的實際方法。
為提高讀者學習效率,本書提供了21章的配書視頻教程及近300個實例的源代碼。這些寶貴的學習資源有助于讀者迅速入門,動手開發實踐。
本書既適合作為C#完全自學圖書,也適合作為相關培訓機構的培訓教材或者高校計算機類專業C#語言課程的參考教材。
周家安,微軟zui有價值專家(MVP),擅長.NET及其相關開發技術,專注于探索簡單實用的編程學習方法。長期在博客園等技術社區撰寫Windows相關技術文章,并出版有《深入淺出:Windows 8.1應用開發》《精通C# 5.0》《Windows 10 應用開發實戰》等原創技術圖書。
第1章準備工作
1.1為什么要編寫程序
1.2C#與.NET框架的關系
1.3只需要一個工具Visual Studio
1.3.1下載和安裝
1.3.2認識Visual Studio
1.3.3如何使用快捷鍵
1.3.4如何放置子窗口
1.3.5自動隱藏窗口
1.3.6巧用快速啟動
1.3.7個性化設置
1.4創建第一個應用程序
1.5解決方案與項目的關系
第2章語法基礎
2.1代碼的基本結構
2.2命名空間
2.2.1為什么要使用命名空間
2.2.2如何訪問命名空間中的成員
2.2.3引入命名空間
2.2.4using static指令
2.3Main入口點
2.3.1程序代碼真的從Main方法開始執行嗎
2.3.2如何選擇入口點
2.4變量與常量
2.4.1變量
2.4.2變量的生命周期
2.4.3常量
2.5命名規則
2.6運算符
2.6.1示例:簡單運算
2.6.2示例:自增和自減運算
2.6.3示例:位運算
2.6.4示例:比較運算符
2.7流程控制
2.7.1順序執行
2.7.2有選擇地執行
2.7.3循環往復
2.8寫注釋是個好習慣
2.9基本的數據類型
2.10不要錯過《C#語言規范》文檔
第3章面向對象編程
3.1類
3.1.1字段
3.1.2屬性
3.1.3方法
3.1.4構造函數與析構函數
3.2結構
3.3引用類型與值類型
3.4ref參數與out參數
3.5方法重載
3.6靜態類與靜態成員
3.7繼承與多態
3.7.1可訪問性
3.7.2繼承
3.7.3注意可訪問性要一致
3.7.4隱藏基類的成員
3.7.5覆寫基類成員
3.7.6如何阻止類被繼承
3.8抽象類
3.9接口
3.9.1定義接口
3.9.2接口與多繼承
3.9.3實現接口
3.9.4顯式實現接口
3.10擴展方法
3.11委托與事件
3.11.1定義和使用委托
3.11.2將方法作為參數傳遞
3.11.3使用事件
3.12枚舉
3.12.1使用枚舉類型
3.12.2如何獲取枚舉的值列表
3.12.3如何取得枚舉中各成員的名字
3.12.4枚舉的位運算
3.13特性
3.13.1自定義特性
3.13.2如何把特性應用到方法的返回值
3.13.3通過反射技術檢索特性
3.14數組
3.14.1定義數組的幾種方法
……
3.14.8靈活使用ArrayList類
第4章控制臺應用程序
4.1輸出文本信息
4.2獲取鍵盤輸入
4.2.1Read方法
4.2.2ReadKey方法
4.2.3ReadLine方法
4.3命令行參數
4.4設置控制臺窗口的外觀
4.5控制臺窗口的大小和位置
第5章字符串處理與數學運算
5.1對象的字符串表示形式
5.1.1重寫ToString方法
5.1.2擴展方法
5.2字符串的串聯與拆分
5.2.1使用 運算符串聯字符串
……
5.2.5使用Split方法拆分字符串
5.3轉義字符
5.4英文字母的大小寫轉換
5.5Parse和TryParse方法
5.6查找和修改字符串
5.6.1查找索引
……
5.6.4填充字符串
5.7格式化字符串
5.7.1IformatProvider接口
5.7.2區域性相關的信息
5.7.3實現字符串的格式化
5.8字符串的復合格式化
5.9字符串內插
5.10生成隨機數
5.11Math類與常用的數學運算
5.12與日期時間有關的計算
第6章類型轉換
6.1隱式轉換
6.2顯式轉換
6.3可以為null的值類型
6.4引用類型的兼容性轉換
6.5類型轉換幫助器
6.6自定義轉換
第7章泛型、集合與變體
7.1泛型類型
7.1.1泛型與類
……
7.1.5泛型約束
7.2集合
7.2.1普通集合
7.2.2泛型集合
7.2.3字典
7.3自定義排序
7.4變體
7.4.1協變與逆變
7.4.2類型參數的輸入與輸出
7.4.3必不可少的技巧
第8章糾錯與單元測試
8.1實時糾正語法錯誤
8.2代碼調試
8.2.1斷點法
8.2.2輸出信息法
8.3斷言
8.4使用日志文件
8.5異常處理
8.6單元測試
第9章匿名方法與Lambda表達式
9.1匿名方法
9.2Lambda表達式
9.2.1用于賦值
9.2.2用于參數傳遞
第10章集成化查詢
10.1LINQ基本語法
10.1.1查詢結果類型的巧妙處理
10.1.2延遲執行與強制立即執行
10.2篩選
10.3排序
10.4分組
10.5更復雜的查詢
10.5.1動態創建類型
10.5.2聯合查詢
10.5.3嵌套查詢
第11章Windows窗體應用程序
11.1Windows窗體應用程序的基本結構
11.1.1客戶區域
……
11.1.5演練: 手動創建一個Windows應用程序
11.2ApplicationContext類
11.3窗體設計器
11.4控件的基類——Control
11.4.1示例:設置控件的位置和大小
11.4.2示例:設置控件的前景色和背景色
11.4.3示例:調整控件的Z順序
11.5常規控件
11.5.1共享事件處理程序
……
11.5.12規范用戶輸入
11.6容器控件
11.6.1在容器內部顯示滾動條
11.6.2分組面板
11.6.3網格布局面板
11.6.4選項卡
11.6.5自動排列內容的面板
11.7工具欄和菜單
11.7.1工具欄
11.7.2菜單欄
11.7.3上下文菜單
11.7.4自定義承載控件
11.8對話框
11.8.1“打開文件”和“保存文件”對話框
……
11.8.4自定義對話框
11.9用戶控件
11.10自定義控件
第12章WPF應用程序
12.1WPF應用程序項目的結構
12.2XAML基礎
12.2.1XAML命名空間
12.2.2代碼隱藏
12.2.3標記擴展
12.2.4內容屬性
12.3依賴項屬性
12.3.1定義和使用依賴項屬性
……
12.3.5附加屬性
12.4路由事件
12.4.1路由策略
12.4.2注冊路由事件的類處理程序
12.5認識WPF控件
12.5.1Control類
12.5.2內容控件
12.5.3輸入控件
12.6數據綁定與視圖呈現
12.6.1用于數據綁定的XAML擴展標記
……
12.6.8ObservableCollection集合
12.7布局
12.7.1Panel類
……
12.7.7Z順序
12.8用戶控件與自定義控件
12.9樣式與資源
12.9.1樣式中的觸發器
12.9.2資源的有效范圍
12.9.3合并資源字典
12.9.4靜態資源與動態資源
12.10圖形
12.10.1Shape類
12.10.2基本圖形
12.11動畫
12.11.1演示圖板
12.11.2簡單動畫與關鍵幀動畫
第13章異步編程
13.1為什么要使用異步編程
13.2使用Thread類進行異步編程
13.3線程鎖
13.4通過委托執行異步操作
13.5并行任務
13.5.1啟動簡單的并行任務
13.5.2Task與Task類
13.5.3創建可取消的Task
13.6async和await關鍵字
13.7ThreadLocal
13.8AsyncLocal
第14章系統信息管理
14.1管理進程
14.1.1管理正在運行的進程
14.1.2啟動新進程
14.1.3重定向輸入/輸出流
14.2管理服務
14.3WMI查詢
14.4讀取系統參數
14.4.1ComputerInfo類
……
14.4.4用于WPF的系統信息類
14.5寫入事件日志
第15章文件與流
15.1創建和刪除目錄
15.2創建和刪除文件
15.3流
15.3.1讀寫文件
15.3.2內存流
15.4內存映射文件
15.5監控文件系統的變化
15.6獨立存儲
15.7壓縮與解壓縮
第16章序列化與反序列化
16.1二進制序列化
16.2XML序列化
16.2.1簡單實現XML序列化和反序列化
16.2.2自定義XML文檔的節點
16.3SOAP序列化
16.4數據協定
16.5JSON序列化
第17章訪問數據庫
17.1SQLLocalDB與SSDT
17.1.1創建和刪除數據服務實例
17.1.2在Visual Studio中連接和創建數據庫
17.1.3編寫SQL語句
17.2示例數據庫
17.3連接數據庫
17.4ADO.NET基礎
17.4.1使用DataReader來讀取數據
……
17.4.4參數化查詢
17.5LinQ to ADO.NET
17.6LinQ to SQL
17.6.1用DataContext直接執行SQL語句
17.6.2動態創建數據庫
第18章程序集與反射
18.1類庫
18.2反射技術基礎
18.2.1動態加載程序集
……
18.2.4動態調用類型成員
第19章網絡編程
19.1Socket編程
19.1.1Socket類
19.1.2TcpListener類與TcpClient類
19.1.3UdpClient類
19.2HTTP通信
19.2.1HttpWebRequest類與HttpWebResponse類
19.2.2WebClient類
19.2.3HttpClient類
19.3獲取網絡接口信息
19.4向目標計算機發送Ping命令
19.5用SMTP發送電子郵件
19.6訪問Web服務
第20章互操作性
20.1調用Win32 API函數
20.2調用COM組件
第21章綜合實例
21.1綜合案例1: 照片面積計算器
21.1.1數據模型準備
……
21.1.5實現日志文件的寫入
21.2綜合案例2: 文件加密與解密工具
21.2.1密碼的處理
21.2.2提取Key和IV
21.2.3實現加密與解密