C# 本事
C# 本事
(涵蓋 C# 10)
關於本書
本書的目的是介紹 C# 程式語言的重要特色,以及實務上常用的 .NET 類別(例如集合、LINQ 等)。也就是說,對於像是變數、迴圈、if...else 等基礎語法,本書都不會介紹。我不想讓這本書便得太厚而難以消化。
目前進行中的章節大致如下:
- chapter 1: C# 基礎語法的重要部分。請注意這裡的「基礎語法」,指的並不是如迴圈(例如 for、foreach)、決策(例如 if...else、switch...case)等基本元素,而是其他稍微進階一點、或更便捷的 C# 語法,包括:可為 null 的型別( nullable types)、 物件初始設定式、 自動實作屬性、匿名型別、擴充方法等等。
- chapter 2:泛型
- chapter 3:委派與 Lambda 表示式
- chapter 4:事件
- chapter 5:C# 6
- chapter 6:C# 7
- chapter 7:C# 8
- chapter 8:C# 9
- chapter 9:C# 10
- chapter 10:列舉器
- chapter 11:LINQ
預計會加入的內容:async/await 語法。
包含此書的套裝組合
目錄
-
關於本書
- 本書定位
- 閱讀方法
- 書寫慣例
- 本書用到的工具
- 範例程式與補充資料
- 版本更新紀錄
- 關於作者
-
C# 基礎語法
-
使用
var
宣告隱含型別 -
使用
dynamic
宣告動態型別 -
可為
null
的型別- 宣告與初始化
- 賦值與取值
- 判斷是否有值
-
與非
Nullable
型別混用
-
物件初始設定式
- 集合的初始設定式
- 自動實作屬性
-
匿名型別
- 投射初始設定式
- 注意事項
- 擴充方法
- 下一步
-
使用
-
泛型
-
為什麼要有泛型?
- 手動轉型的問題
- 土法煉鋼
- 泛型之美
-
細說泛型
- 泛型、型別參數、建構的型別
- 泛型是型別的樣板
- 建構式與解構式
- 預設值的表示法
- 型別參數的條件約束
- 泛型介面與結構
-
泛型方法
- 型別推斷
- 擴充方法與泛型類別
- 泛型與 C++ 樣板的差異
-
泛型的型別相容問題
- 核心概念:型別相容
- Covariance
- Contravariance
- 重點回顧
-
為什麼要有泛型?
-
委派與 Lambda 表示式
-
委派
- 為什麼要用委派?
- C# 1.0 的寫法
- C# 2.0 的寫法
- C# 3.0 的寫法
- 泛型委派
-
Lambda 表示式
- 運算式 lambda
- 陳述式 lambda
- 重點整理:概念圖
- 外部變數
- 運算式樹
- 總結
-
委派
-
事件
-
基礎觀念
- 事件驅動程式設計
- 發行-訂閱模式
-
使用委派來實作事件
- 宣告委派型別
- 宣告委派變數
- 觸發事件
- 訂閱事件
- 加入與移除事件處理常式
-
使用
event
關鍵字- 提供觸發事件的方法
-
.NET 事件程式設計的慣例
- 不要傳回值
- 在參數列提供來源物件
-
使用
EventArgs
來包裝參數 -
使用現成的
EventHandler
型別
-
更好的設計
- 事件參數僅提供唯讀屬性
- 避免意外中斷事件處理流程
- 使用事件存取子
- 管理大量事件
-
委派 vs. 事件
- 相同之處
- 相異之處
- 總結
-
基礎觀念
-
C# 6
-
nameof
表示式 - 字串插值
-
Null
條件運算子 -
唯讀自動實作屬性
- 微妙議題:明確實作介面的唯讀屬性
- 自動屬性的初始設定式
-
以表示式為本體的成員
- C# 7 的改進
- 索引初始設定式
-
using static
陳述式 - 例外篩選條件
-
catch
和finally
區塊中的await
-
-
C# 7
- 宣告輸出變數
-
Tuple 語法
- Tuple 元素名稱推導
- 無法推導元素名稱的情形
- Tuple 與匿名方法
-
分解式
- 為類別加入分解式
- 巢狀分解
-
模式匹配
-
模式匹配之
is
陳述式 -
模式匹配之
switch
陳述式
-
模式匹配之
-
區域函式
- 捕捉區域變數
- 更好讀的數值表示法
-
Ref Local 與 Ref Return
- Ref Local
- Ref Return
- 重新指派 Ref Local
- 用在哪裡?
- Ref 條件運算式
- Ref readonly
-
throw
運算式 -
async Main
方法 -
default
運算式- 用於泛型
-
實值型別具備參考語意
- in 參數
- 唯讀結構
- 只能放在堆疊的結構(ref struct)
- 非後置的具名引數
-
private protected
修飾詞 - 結語
-
C# 8
- 結構成員可宣告唯讀
- 預設介面實作
-
可為 Null 的參考型別
- 開啟 Nullable Reference Types 功能
- 在個別檔案中使用 #nullable 指示詞
- 專案與方案層級的設定
- 重點整理
-
C# 9
- 頂層語句
- new 物件時可省略型別
- Init-only Setter
-
記錄
- 編譯器產生的程式碼
- 複製物件
-
ToString
方法 -
Equals
方法 -
Deconstruct
方法 - 結語
- 樣式比對的改進
- 改寫回傳型別
- IEnumerator 更容易支援 foreach
- Lambda 捨棄參數
- Interop 方面的改進
- 其他改進
-
C# 10
- File-scoped 命名空間
-
全域引用
- 使用 C# 檔案來管理全域引用
- 透過專案檔來管理全域引用
- 字串常數插補
- 巢狀屬性樣式
- Lambda 語法的改進
- 分解式的改進
-
記錄的改進
- 以結構實作的記錄
-
ToString
方法可被密封
- 結構的改進
- 匿名型別的非破壞式變形
-
字串插補的效能改進
- 字串插補處理器
-
CallerArgumentExpression
特徵項 -
AsyncMethodBuilder
特徵項可套用至方法 - 其他改進
-
列舉器
-
從
foreach
說起 -
IEnumerator
介面 -
IEnumerable
介面 - 設計「可列舉的」類別
-
IEnumerable<T>
與IEnumerator<T>
介面 - 重點回顧
-
從
-
LINQ
-
基本觀念
- C# 的 LINQ 表示式
- 串接語法
- LINQ 提供者
-
IEnumerable<T>
vs.IQueryable<T>
- 延遲執行
- 重複求值
-
實務練習
- 篩選
- 排序
- 尋找單一項目
- 判斷是否符合特定條件
- 轉換物件
- 計數、最大/最小值、平均、彙總
- 分組
- 產生序列
- 擴增查詢結果
- 父子關聯
-
LINQ 進階練習
- 誰的分數最高?
- 重點回顧
-
基本觀念
-
附錄 A:Visual Studio 的專案設定
- 指定編譯時所使用的 C# 版本
- 調整編譯器的警告
-
附錄 B:安裝與設定 Visual Studio Code
- 安裝
- 版權頁
- 備註
關於出版社

This book is published on Leanpub by Ministep Books
Leanpub 60天 100% 滿意保證
在購買後的 60 天內,您可以透過 兩次點擊 獲得任何 Leanpub 購買項目的 100% 退款。
技術上來說,這對我們是有風險的,因為無論如何您都會擁有書籍或課程檔案。但我們對我們的產品和服務,以及我們的作者和讀者都充滿信心,因此我們很樂意為所有銷售的內容提供全額退款保證。
只有親自嘗試才能知道某樣東西是否真的好,而且因為我們提供 100% 退款保證,所以這完全沒有風險!
所以,還有什麼理由不點擊「加入購物車」按鈕呢?
查看完整條款...
在10美元的購買中賺取8美元,在20美元的購買中賺取16美元
對於7.99美元或以上的購買,我們支付80%版稅,對於0.99至7.98美元之間的購買,我們支付80%版稅減去0.50美元固定費用。在10美元的銷售中您可賺取8美元,在20美元的銷售中可賺取16美元。因此,如果我們以20美元售出5000本不退款的圖書,您將賺取80,000美元。
(是的,一些作者在Leanpub上已經賺取了遠超過這個數額的收入。)
事實上,作者們通過在Leanpub上寫作、出版和銷售已經賺取了超過1400萬美元。
了解更多關於在Leanpub上寫作的信息
免費更新。無 DRM 限制。
當您購買 Leanpub 的書籍時,只要作者更新書籍內容,您就能永久免費獲得更新!許多作者在寫作過程中會使用 Leanpub 發布他們的在製書籍。所有讀者都能獲得免費更新,無論他們何時購買書籍或支付多少金額(包括免費)。
大多數 Leanpub 書籍提供 PDF(適用於電腦)和 EPUB(適用於手機、平板電腦和 Kindle)格式。在本頁面右上角會顯示該書提供的格式。
最後,Leanpub 的書籍沒有任何 DRM 複製保護機制,因此您可以在任何支援的設備上輕鬆閱讀。