自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linq擴(kuò)展方法簡(jiǎn)單描述

開(kāi)發(fā) 后端
這里介紹Linq擴(kuò)展方法基本上屬于可通過(guò)實(shí)例語(yǔ)法調(diào)用的靜態(tài)方法。上述查詢問(wèn)題的根源是我們?cè)噲D向 IEnumerable<T> 添加方法。

本文向大家介紹Linq擴(kuò)展方法,可能好多人還不了解Linq擴(kuò)展方法,沒(méi)有關(guān)系,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。

Linq擴(kuò)展方法

結(jié)果證明,更好的語(yǔ)法將以被稱為L(zhǎng)inq擴(kuò)展方法的語(yǔ)言功能形式出現(xiàn)。Linq擴(kuò)展方法基本上屬于可通過(guò)實(shí)例語(yǔ)法調(diào)用的靜態(tài)方法。上述查詢問(wèn)題的根源是我們?cè)噲D向 IEnumerable<T> 添加方法。但如果我們要添加運(yùn)算符,如 Where、Select 等,則所有現(xiàn)有和未來(lái)的實(shí)現(xiàn)器都必須實(shí)現(xiàn)那些方法。盡管那些實(shí)現(xiàn)絕大多數(shù)都是相同的。在 C# 中共享“接口實(shí)現(xiàn)”的唯一方法是使用靜態(tài)方法,這是我們處理以前使用的EnumerableExtensions 類的一個(gè)成功方法。

假設(shè)我們轉(zhuǎn)而將 Where 方法編寫(xiě)為L(zhǎng)inq擴(kuò)展方法。那么,查詢可重新編寫(xiě)為:

  1. IEnumerable<Customer> locals = customers.Where(c => c.ZipCode == 91822); 

對(duì)于此簡(jiǎn)單查詢,該語(yǔ)法近乎***。但將 Where 方法編寫(xiě)為L(zhǎng)inq擴(kuò)展方法的真正含義是什么呢?其實(shí)非常簡(jiǎn)單?;旧?,因?yàn)殪o態(tài)方法的簽名發(fā)生更改,因此“this”修飾符就被添加到***個(gè)參數(shù):

  1. public static IEnumerable<T> Where<T>(this IEnumerable<T> items, Func<T, bool> predicate) 

此外,必須在靜態(tài)類中聲明該方法。靜態(tài)類是一種只能包含靜態(tài)成員,并在類聲明中用靜態(tài)修飾符表示的類。這就它的全部含義。此聲明指示編譯器允許在任何實(shí)現(xiàn) IEnumerable<T> 的類型上用與實(shí)例方法相同的語(yǔ)法調(diào)用 Where。但是,必須能夠從當(dāng)前作用域訪問(wèn) Where 方法。當(dāng)包含類型處于作用域內(nèi)時(shí),方法也在作用域內(nèi)。因此,可以通過(guò) Using 指令將Linq擴(kuò)展方法引入作用域。

Linq擴(kuò)展方法有助于簡(jiǎn)化我們的查詢示例,但除此之外,這些方法是不是一種廣泛有用的語(yǔ)言功能呢?事實(shí)證明Linq擴(kuò)展方法有多種用途。其中一個(gè)最常見(jiàn)的用途可能是提供共享接口實(shí)現(xiàn)。例如,假設(shè)您有以下接口:

  1. interface IDog  
  2. {  
  3. // Barks for 2 seconds  
  4. void Bark();  
  5. void Bark(int seconds);  

請(qǐng)注意,此查詢的返回類型不同,它是 IEnumerable<string> 而不是 IEnumerable<Customer>。這是因?yàn)槲覀儍H從 select 語(yǔ)句中返回客戶名稱。

【編輯推薦】

  1. LINQ匿名類型分析
  2. LINQ Where子句介紹
  3. LINQ使用Where擴(kuò)展方法
  4. 介紹LINQ一些強(qiáng)大功能
  5. Linq使用Select淺談
責(zé)任編輯:佚名 來(lái)源: IT168
相關(guān)推薦

2009-09-17 11:29:50

Linq擴(kuò)展方法

2009-09-14 10:57:46

LINQ入門(mén)

2009-09-09 15:28:43

Linq to obj

2009-09-15 16:26:36

Linq orderb

2009-09-18 16:00:07

LINQ架構(gòu)

2009-09-10 09:09:40

Linq實(shí)體繼承

2009-09-08 09:24:50

LINQ查詢

2009-09-14 10:20:52

LINQ查詢語(yǔ)法

2009-09-17 09:24:57

Linq實(shí)現(xiàn)分頁(yè)

2009-09-11 12:32:33

LINQ表達(dá)式

2009-09-09 11:24:13

Linq使用數(shù)據(jù)表

2009-09-09 13:07:37

創(chuàng)建Linq數(shù)據(jù)庫(kù)

2009-09-10 16:32:19

LINQ Where

2009-09-09 15:37:27

Linq DataLo

2009-09-10 15:26:03

Linq City集合

2009-09-10 10:37:15

LINQ to SQL

2009-09-14 15:43:12

Linq Settin

2009-09-16 09:38:27

LINQ To SQL

2009-08-26 15:53:48

C#擴(kuò)展方法

2009-09-17 17:14:54

linq to sql
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)