本書全面系統(tǒng)地論述了C#6.0的開發(fā)環(huán)境、語法基礎(chǔ)、程序結(jié)構(gòu)、編程技巧及編程案例。全書共包括21章,分別介紹了以下內(nèi)容:開發(fā)環(huán)境搭建、語法基礎(chǔ)、面向?qū)ο缶幊獭㈩愋娃D(zhuǎn)換、字符串處理與數(shù)學(xué)運算、控制臺應(yīng)用程序、變體的應(yīng)用、集合與泛型、調(diào)試與單元測試、Lambda表達式、LINQ查詢語句、Windows窗體應(yīng)用程序、WPF基礎(chǔ)知識、多線程與異步編程、系統(tǒng)信息管理、文件與流、序列化技術(shù)、數(shù)據(jù)庫訪問技術(shù)、反射、網(wǎng)絡(luò)編程、互操作性等。在本書最后一章,專門設(shè)計了綜合實例——“綜合實例1:照片面積計算機器”和“綜合實例2:文件加密與解密工具”,通過這兩個綜合實例,既可以將前20章的知識融會貫通,又可以拋磚引玉,真正教會讀者開發(fā)C#應(yīng)用程序的實際方法。
為提高讀者學(xué)習效率,本書提供了21章的配書視頻教程及近300個實例的源代碼。這些寶貴的學(xué)習資源有助于讀者迅速入門,動手開發(fā)實踐。
本書既適合作為C#完全自學(xué)圖書,也適合作為相關(guān)培訓(xùn)機構(gòu)的培訓(xùn)教材或者高校計算機類專業(yè)C#語言課程的參考教材。
周家安,微軟zui有價值專家(MVP),擅長.NET及其相關(guān)開發(fā)技術(shù),專注于探索簡單實用的編程學(xué)習方法。長期在博客園等技術(shù)社區(qū)撰寫Windows相關(guān)技術(shù)文章,并出版有《深入淺出:Windows 8.1應(yīng)用開發(fā)》《精通C# 5.0》《Windows 10 應(yīng)用開發(fā)實戰(zhàn)》等原創(chuàng)技術(shù)圖書。
第1章準備工作
1.1為什么要編寫程序
1.2C#與.NET框架的關(guān)系
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個性化設(shè)置
1.4創(chuàng)建第一個應(yīng)用程序
1.5解決方案與項目的關(guān)系
第2章語法基礎(chǔ)
2.1代碼的基本結(jié)構(gòu)
2.2命名空間
2.2.1為什么要使用命名空間
2.2.2如何訪問命名空間中的成員
2.2.3引入命名空間
2.2.4using static指令
2.3Main入口點
2.3.1程序代碼真的從Main方法開始執(zhí)行嗎
2.3.2如何選擇入口點
2.4變量與常量
2.4.1變量
2.4.2變量的生命周期
2.4.3常量
2.5命名規(guī)則
2.6運算符
2.6.1示例:簡單運算
2.6.2示例:自增和自減運算
2.6.3示例:位運算
2.6.4示例:比較運算符
2.7流程控制
2.7.1順序執(zhí)行
2.7.2有選擇地執(zhí)行
2.7.3循環(huán)往復(fù)
2.8寫注釋是個好習慣
2.9基本的數(shù)據(jù)類型
2.10不要錯過《C#語言規(guī)范》文檔
第3章面向?qū)ο缶幊?nbsp;
3.1類
3.1.1字段
3.1.2屬性
3.1.3方法
3.1.4構(gòu)造函數(shù)與析構(gòu)函數(shù)
3.2結(jié)構(gòu)
3.3引用類型與值類型
3.4ref參數(shù)與out參數(shù)
3.5方法重載
3.6靜態(tài)類與靜態(tài)成員
3.7繼承與多態(tài)
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實現(xiàn)接口
3.9.4顯式實現(xiàn)接口
3.10擴展方法
3.11委托與事件
3.11.1定義和使用委托
3.11.2將方法作為參數(shù)傳遞
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如何把特性應(yīng)用到方法的返回值
3.13.3通過反射技術(shù)檢索特性
3.14數(shù)組
3.14.1定義數(shù)組的幾種方法
……
3.14.8靈活使用ArrayList類
第4章控制臺應(yīng)用程序
4.1輸出文本信息
4.2獲取鍵盤輸入
4.2.1Read方法
4.2.2ReadKey方法
4.2.3ReadLine方法
4.3命令行參數(shù)
4.4設(shè)置控制臺窗口的外觀
4.5控制臺窗口的大小和位置
第5章字符串處理與數(shù)學(xué)運算
5.1對象的字符串表示形式
5.1.1重寫ToString方法
5.1.2擴展方法
5.2字符串的串聯(lián)與拆分
5.2.1使用 運算符串聯(lián)字符串
……
5.2.5使用Split方法拆分字符串
5.3轉(zhuǎn)義字符
5.4英文字母的大小寫轉(zhuǎn)換
5.5Parse和TryParse方法
5.6查找和修改字符串
5.6.1查找索引
……
5.6.4填充字符串
5.7格式化字符串
5.7.1IformatProvider接口
5.7.2區(qū)域性相關(guān)的信息
5.7.3實現(xiàn)字符串的格式化
5.8字符串的復(fù)合格式化
5.9字符串內(nèi)插
5.10生成隨機數(shù)
5.11Math類與常用的數(shù)學(xué)運算
5.12與日期時間有關(guān)的計算
第6章類型轉(zhuǎn)換
6.1隱式轉(zhuǎn)換
6.2顯式轉(zhuǎn)換
6.3可以為null的值類型
6.4引用類型的兼容性轉(zhuǎn)換
6.5類型轉(zhuǎn)換幫助器
6.6自定義轉(zhuǎn)換
第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協(xié)變與逆變
7.4.2類型參數(shù)的輸入與輸出
7.4.3必不可少的技巧
第8章糾錯與單元測試
8.1實時糾正語法錯誤
8.2代碼調(diào)試
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用于參數(shù)傳遞
第10章集成化查詢
10.1LINQ基本語法
10.1.1查詢結(jié)果類型的巧妙處理
10.1.2延遲執(zhí)行與強制立即執(zhí)行
10.2篩選
10.3排序
10.4分組
10.5更復(fù)雜的查詢
10.5.1動態(tài)創(chuàng)建類型
10.5.2聯(lián)合查詢
10.5.3嵌套查詢
第11章Windows窗體應(yīng)用程序
11.1Windows窗體應(yīng)用程序的基本結(jié)構(gòu)
11.1.1客戶區(qū)域
……
11.1.5演練: 手動創(chuàng)建一個Windows應(yīng)用程序
11.2ApplicationContext類
11.3窗體設(shè)計器
11.4控件的基類——Control
11.4.1示例:設(shè)置控件的位置和大小
11.4.2示例:設(shè)置控件的前景色和背景色
11.4.3示例:調(diào)整控件的Z順序
11.5常規(guī)控件
11.5.1共享事件處理程序
……
11.5.12規(guī)范用戶輸入
11.6容器控件
11.6.1在容器內(nèi)部顯示滾動條
11.6.2分組面板
11.6.3網(wǎng)格布局面板
11.6.4選項卡
11.6.5自動排列內(nèi)容的面板
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應(yīng)用程序
12.1WPF應(yīng)用程序項目的結(jié)構(gòu)
12.2XAML基礎(chǔ)
12.2.1XAML命名空間
12.2.2代碼隱藏
12.2.3標記擴展
12.2.4內(nèi)容屬性
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內(nèi)容控件
12.5.3輸入控件
12.6數(shù)據(jù)綁定與視圖呈現(xiàn)
12.6.1用于數(shù)據(jù)綁定的XAML擴展標記
……
12.6.8ObservableCollection集合
12.7布局
12.7.1Panel類
……
12.7.7Z順序
12.8用戶控件與自定義控件
12.9樣式與資源
12.9.1樣式中的觸發(fā)器
12.9.2資源的有效范圍
12.9.3合并資源字典
12.9.4靜態(tài)資源與動態(tài)資源
12.10圖形
12.10.1Shape類
12.10.2基本圖形
12.11動畫
12.11.1演示圖板
12.11.2簡單動畫與關(guān)鍵幀動畫
第13章異步編程
13.1為什么要使用異步編程
13.2使用Thread類進行異步編程
13.3線程鎖
13.4通過委托執(zhí)行異步操作
13.5并行任務(wù)
13.5.1啟動簡單的并行任務(wù)
13.5.2Task與Task類
13.5.3創(chuàng)建可取消的Task
13.6async和await關(guān)鍵字
13.7ThreadLocal
13.8AsyncLocal
第14章系統(tǒng)信息管理
14.1管理進程
14.1.1管理正在運行的進程
14.1.2啟動新進程
14.1.3重定向輸入/輸出流
14.2管理服務(wù)
14.3WMI查詢
14.4讀取系統(tǒng)參數(shù)
14.4.1ComputerInfo類
……
14.4.4用于WPF的系統(tǒng)信息類
14.5寫入事件日志
第15章文件與流
15.1創(chuàng)建和刪除目錄
15.2創(chuàng)建和刪除文件
15.3流
15.3.1讀寫文件
15.3.2內(nèi)存流
15.4內(nèi)存映射文件
15.5監(jiān)控文件系統(tǒng)的變化
15.6獨立存儲
15.7壓縮與解壓縮
第16章序列化與反序列化
16.1二進制序列化
16.2XML序列化
16.2.1簡單實現(xiàn)XML序列化和反序列化
16.2.2自定義XML文檔的節(jié)點
16.3SOAP序列化
16.4數(shù)據(jù)協(xié)定
16.5JSON序列化
第17章訪問數(shù)據(jù)庫
17.1SQLLocalDB與SSDT
17.1.1創(chuàng)建和刪除數(shù)據(jù)服務(wù)實例
17.1.2在Visual Studio中連接和創(chuàng)建數(shù)據(jù)庫
17.1.3編寫SQL語句
17.2示例數(shù)據(jù)庫
17.3連接數(shù)據(jù)庫
17.4ADO.NET基礎(chǔ)
17.4.1使用DataReader來讀取數(shù)據(jù)
……
17.4.4參數(shù)化查詢
17.5LinQ to ADO.NET
17.6LinQ to SQL
17.6.1用DataContext直接執(zhí)行SQL語句
17.6.2動態(tài)創(chuàng)建數(shù)據(jù)庫
第18章程序集與反射
18.1類庫
18.2反射技術(shù)基礎(chǔ)
18.2.1動態(tài)加載程序集
……
18.2.4動態(tài)調(diào)用類型成員
第19章網(wǎng)絡(luò)編程
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獲取網(wǎng)絡(luò)接口信息
19.4向目標計算機發(fā)送Ping命令
19.5用SMTP發(fā)送電子郵件
19.6訪問Web服務(wù)
第20章互操作性
20.1調(diào)用Win32 API函數(shù)
20.2調(diào)用COM組件
第21章綜合實例
21.1綜合案例1: 照片面積計算器
21.1.1數(shù)據(jù)模型準備
……
21.1.5實現(xiàn)日志文件的寫入
21.2綜合案例2: 文件加密與解密工具
21.2.1密碼的處理
21.2.2提取Key和IV
21.2.3實現(xiàn)加密與解密