C in Depth 第十章 擴充套件方法)

2022-09-13 09:09:10 字數 1856 閱讀 2437

10.1 未引入擴充套件方法之前的狀態

為流提供簡單功能的乙個簡單工具類

public

static

class

streamutilnoextensions

}public

static

byte

readfully(stream input)

return

tempstream.toarray();}}

}

用streamutil將web響應流複製到乙個檔案

class

usingstreamutilwithoutextensions

}}

10.2 擴充套件方法的語法

10.2.1宣告擴充套件方法

包含擴充套件方法的streamutil類

public

static

class

streamutilwithextensions

}public

static

byte readfully(this

stream input)

return

tempstream.toarray();}}

}

10.2.2呼叫擴充套件方法

用擴充套件方法複製乙個流

class

usingstreamutilwithextensions

}}

10.2.3擴充套件方法是怎樣被發現的

編譯器根據using找到擴充套件方法。

10.2.4在空引用上呼叫方法

static

class

nullutil

}

10.3.1 從enumerable開始起步

用enumerable.range列印數字0~9

class

rangeenumeration

}}

用reverse方法來反轉乙個集合

class

rangereversal

}}

10.3.2 用where過濾並將方法呼叫鏈結到一起

用lambda表示式作為where方法的引數,從而只保留奇數

class

rangefiltering

}}

10.3.3 插曲:似曾相識的where方法

10.3.4 用select方法和匿名型別進行投影

class

rangeprojection

);foreach (var element in

collection)

)=",

element.original,

element.squareroot);}}

}

10.3.5 用orderby方法進行排序

class

rangeordering

).orderby(x =>x.square)

.thenby(x =>x.original);

foreach (var element in

collection)

}}

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...

第十章 屬性

目錄 10.1 無參屬性 10.2 有參屬性 10.3 呼叫屬性訪問器方法時的效能 10.4 屬性訪問器的可訪問性 10.5 泛型屬性訪問器方法 物件導向設計和程式設計的重要原則之一就是資料封裝,意味著型別的字段不應該公開,否則很容易因為不恰單使用欄位而破壞物件的狀態。可將屬性想象成智慧型字段,即背...