Learning hard C# 學習筆記
內容描述
<內容介紹>
李志編著的《Learning hard C#學習筆記/圖靈原創》是一本面向C#初學者的實用教程。從開發基礎開始,由淺入深地講解了C#的基礎語法和重要特性,分析了在開發中必須掌握的技術要領和經驗心得。語言輕鬆幽默,通過精心選擇的實例和詳盡的代碼全面介紹了C#最具特色的關鍵知識點,有助於初學者迅速從一個C#開發的門外漢成長為全面掌握技術要領的開發人員。
本書適合C#和.NET初學者、Web開發工程師以及電腦專業的學生閱讀。
<章節目錄>
第1章 你真的瞭解C#嗎
1.1 什麼是C#
1.1.1 C#語言的發展歷程
1.1.2 C#能編寫哪些應用程序
1.2 什麼是.NET Framework
1.2.1 .NET Framework的組成
1.2.2 C#與.NET Framework的關係
1.2.3 C#代碼的執行過程
1.3 歸納總結
第2章 來點C#的感覺
2.1 開發環境的搭建
2.2 創建「歡迎你」應用程序
2.2.1 創建控制台項目
2.2.2 編譯和運行程序
2.2.3 對程序進行調試
2.3 歸納總結
第3章 打開C#的大門——C#語言基礎
3.1 標識符和關鍵字
3.1.1 標識符
3.1.2 關鍵字
3.2 基礎數據類型
3.2.1 數值類型
3.2.2 字符串類型
3.2.3 枚舉類型
3.2.4 結構體類型
3.2.5 數組類型
3.3 變量和常量
3.3.1 變量的使用
3.3.2 變量的作用域
3.3.3 常量
3.4 運算符和表達式
3.4.1 運算符
3.4.2 運算符優先級
3.4.3 運算符重載
3.4.4 表達式
3.5 C#中的語句
3.5.1 條件語句
3.5.2 循環語句
3.5.3 跳轉語句
3.6 歸納總結
第4章 C#中的類
4.1 什麼是類
4.2 C#中如何定義一個類
4.3 類的成員
4.3.1 字段
4.3.2 屬性
4.3.3 方法
4.3.4 構造函數
4.3.5 析構函數
4.3.6 索引器
4.4 類實例化
4.5 類與結構體的區別
4.6 歸納總結
第5章 首先需要明確的——C#中的面向對象編程
5.1 封裝
5.2 繼承
5.2.1 C#中的繼承
5.2.2 密封類
5.2.3 子類的初始化順序
5.3 多態
5.3.1 使用virtual和override關鍵字實現方法重寫
5.3.2 阻止派生類重寫虛成員
5.3.3 使用新成員隱藏基類成員
5.4 所有類的父類:System.object
5.5 歸納總結
第6章 電腦有USB接口,C#也有接口
6.1 什麼是接口
6.2 如何使用接口來編程
6.2.1 接口的定義
6.2.2 繼承接口
6.2.3 調用接口中的方法
6.3 顯式接口實現方式
6.4 接口與抽象類
6.5 面向對象編程的應用
6.6 歸納總結
第7章 透過外表看本質——IL 語言
7.1 什麼是IL
7.2 先睹為快——從「Hello World」看IL
7.2.1 工具的介紹
7.2.2 使用工具查看IL代碼
7.3 教你看懂IL代碼
7.3.1 IL基本類型
7.3.2 變量的聲明
7.3.3 基本運算
7.3.4 IL中的流程控制
7.4 歸納總結
第8章 正式進入C#的世界——委託
8.1 C#委託是什麼
8.2 委託的使用
8.3 為什麼要引入委託
8.4 委託的本質
8.5 委託鏈
8.5.1 委託鏈的使用
8.5.2 從委託鏈中移除委託
8.6 歸納總結
第9章 事件揭秘
9.1 什麼是事件
9.2 使用事件
9.2.1 如何定義事件
9.2.2 訂閱和取消事件
9.2.3 擴展EventArgs類
9.3 事件的本質
9.4 歸納總結
第10章 深入理解類型
10.1 C#中的類型——值類型和引用類型
10.1.1 什麼是值類型和引用類型
10.1.2 值類型與引用類型的區別
10.1.3 兩大類型間的轉換——裝箱與拆箱
10.2 參數傳遞問題剖析
10.2.1 值類型參數的按值傳遞
10.2.2 引用類型參數的按值傳遞
10.2.3 string引用類型參數按值傳遞的特殊情況
10.2.4 值類型和引用類型參數的按引用傳遞
10.3 歸納總結
第11章 使類型參數化——泛型
11.1 泛型是什麼
11.2 C# 2.0為什麼要引入泛型
11.3 全面解析泛型
11.3.1 類型參數
11.3.2 泛型中的靜態字段和靜態函數問題
11.3.3 類型參數的推斷
11.3.4 類型參數的約束
11.4 歸納總結
第12章 可空類型、匿名方法和迭代器
12.1 可空類型
12.1.1 可空類型簡介
12.1.2 你知道空合併操作符嗎
12.1.3 可空類型的裝箱和拆箱操作
12.2 匿名方法
12.2.1 什麼是匿名方法
12.2.2 對變量捕捉過程的剖析
12.3 迭代器
12.3.1 迭代器的簡介
12.3.2 C# 1.0中如何實現迭代器
12.3.3 C# 2.0簡化了迭代器的實現
12.3.4 迭代器的執行過程
12.4 歸納總結
第13章 C#的春天——C# 3.0中智能的編譯器
13.1 自動實現的屬性
13.2 隱式類型
13.2.1 隱式類型的局部變量
13.2.2 隱式類型數組
13.3 對象集合初始化器
13.4 匿名類型
13.5 歸納總結
第14章 不一樣的編碼風格——Lambda表達式
14.1 Lambda表達式簡介
14.1.1 Lambda表達式的演變過程
14.1.2 Lambda表達式的使用
14.2 表達式也有樹結構——表達式樹
14.2.1 動態地構造一個表達式樹
14.2.2 通過Lambda表達式來構造表達式樹
14.2.3 如何把表達式樹轉換成可執行代碼
14.3 歸納總結
第15章 使類的擴展更簡單——擴展方法
15.1 什麼是擴展方法
15.2 擴展方法的使用
15.2.1 定義擴展方法
15.2.2 調用擴展方法
15.3 編譯器如何發現擴展方法
15.4 空引用也可調用擴展方法
15.4.1 拿例子說話
15.4.2 空引用上調用擴展方法揭秘
15.5 歸納總結
第16章 數據操作So easy——LINQ解析
16.1 LINQ是什麼
16.2 LINQ好在哪裡
16.2.1 查詢表達式
16.2.2 使用Linq to Objects查詢集合
16.2.3 使用Linq to XML查詢XML 文件
16.3 理解LINQ的本質
16.4 歸納總結
第17章 小改動大作為——C# 4.0中的微小改動
17.1 可選參數和命名實參
17.1.1 可選參數
17.1.2 命名實參
17.1.3 COM互操作的福音
17.2 泛型的可變性
17.2.1 協變性
17.2.2 逆變性
17.2.3 協變和逆變的註意事項
17.3 歸納總結
第18章 靜中有動——動態類型
18.1 動態類型簡介
18.2 C#為什麼要引入動態類型
18.2.1 可以減少強制類型轉換的使用
18.2.2 調用Python等動態語言
18.3 動態類型約束
18.3.1 不能用來調用擴展方法
18.3.2 委託與動態類型間不能做隱式轉換
18.3.3 不能調用構造函數和靜態方法
18.3.4 類型聲明和泛型類型參數
18.4 實現自己的動態行為
18.4.1 使用ExpandoObject來實現動態行為
18.4.2 使用DynamicObject來實現動態行為
18.4.3 使用IDynamicMetaObject-Provider接口來實現動態行為
18.5 歸納總結
第19章 你必須掌握的多線程編程
19.1 多線程編程必備知識
19.1.1 進程與線程的概念
19.1.2 線程的調度
19.1.3 線程也分前後台
19.2 線程的容器——線程池
19.2.1 線程池
19.2.2 通過線程池來實現多線程
19.2.3 協作式取消線程池線程
19.3 線程同步
19.3.1 多線程程序中存在的隱患
19.3.2 使用監視器對象實現線程同步
19.3.3 線程同步技術存在的問題
19.4 歸納總結
第20章 不得不說的異步編程
20.1 什麼是異步編程
20.2 同步方式存在的問題
20.3 異步編程模型(APM)
20.4 異步編程模型——EAP
20.5 TAP又是什麼
20.6 讓異步編程So easy——C# 5.0 中的async和await
20.7 歸納總結
第21章 出師前闖關訓練第一關——文件操作
21.1 文件操作核心類
21.1.1 File 和FileInfo類
21.1.2 Directory和DirectoryInfo類
21.2 流
21.3 對文件進行異步操作
21.4 歸納總結
第22章 出師前闖關訓練第二關——網絡編程
22.1 網絡編程基礎知識
22.1.1 網絡分層總覽
22.1.2 各層所使用的協議
22.1.3 網絡程序的工作機制
22.2 基於TCP的網絡程序的實現
22.2.1 TCP的工作過程
22.2.2 基於TCP的簡單通信程序的實現
22.3 基於UDP的網絡程序的實現
22.3.1 UDP的工作原理
22.3.2 UDP的優勢
22.3.3 基於UDP的簡單通信程序的實現
22.4 歸納總結
第23章 出師前闖關訓練最後一關——使用GDI+實現屬於你的截圖工具
23.1 前期準備
23.1.1 什麼是GDI+
23.1.2 筆、畫筆和顏色
23.2 動手實現你的QQ截圖工具
23.2.1 實現思路
23.2.2 瞧瞧最終結果
23.3 歸納總結