擴充套件方法和LINQ

2022-02-07 04:12:34 字數 1439 閱讀 2084

以前一直看到方法列表中有種方法的圖示是 普通方法的紅立方體右邊還有個箭頭

就像這樣

,原來這種方法就是擴充套件方法

擴充套件方法不能訪問它擴充套件的型別的私有成員。呼叫擴充套件方法只是呼叫靜態方法的一種新語法

**public

static

classa"

, s);}}

class

program

}這樣就擴充套件了string類,this關鍵字區分了一般的靜態方法和擴充套件方法

下面模仿.net類庫的enumerable類實現乙個where方法

**public

static

classa}

}}class

program

//這是.net類庫自帶的方法,排序

foreach

(string

s in

list.orderbydescending(a 

=>

a))//

這是.net類庫自帶的方法

foreach

(string

s in

list.select(a 

=>a +

"111111"))

console.read();}}

如果連續用幾個擴充套件方法

**class

program

;ienumerable

<

string

>

result 

=names.where(n 

=>

n.startswith("c

")).

orderbydescending(n 

=>

n).select(n 

=>

n);foreach

(string

n in

result)

console.read();}}

這是不是很像sql語句?所以linq橫空出世了。。

**class

program

;var nameasc 

=from n 

innames

where

n.startswith("c

")orderby n descending

select n;

foreach

(string

name 

innameasc)

//where(n => n.startswith("c"))被翻譯為where n.startswith("c")

//orderbydescending(n => n)    被翻譯為orderby n descending

//select(n => n)               被翻譯為select n

console.read();}}

LinQ 擴充套件方法

本節主要講解擴充套件方法,涉及 linq 的具體知識不多。net framework 為程式設計人員提供了很多的類,很多的方法,但是,不論 net framework 在類中為我們提供了多麼多的方法,有時候仍然不能滿足我們的需求,例如 你想讓字串物件具有topascal方法,含義就是將字串轉化為 p...

LinQ 擴充套件方法

本節主要解說擴充套件方法,涉及 linq 的詳細知識不多。net framework 為程式設計人員提供了非常多的類,非常多的方法,可是,不論 net framework 在類中為我們提供了多麼多的方法,有時候仍然不能滿足我們的需求,比如 你想讓字串物件具有topascal方法,含義就是將字串轉化為...

Linq擴充套件方法

如果要擴充套件linq查詢方法集,只需要為ienumerable擴充套件方法。第一種 擴充套件聚合方法,類似已有python基礎教程的max min,可以給具體型別擴充套件,也可以給泛型擴充套件。using system using system.collections using system.c...