什麼是擴充套件方法?
擴充套件方法顧名思義,就是允許向現有的「型別」新增方法,而無需建立派生類、重新編譯或以其他方式修改原來型別。
擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。
擴充套件方法和例項方法有何區別?
通常只有在不得已(例如:不能修改原來的型別)的情況下才實現擴充套件方法,如果擴充套件方法和型別中定義的例項方法相同,則擴充套件方法不會被呼叫,因為例項方法的優先順序高於擴充套件方法的優先順序。。
已用到的擴充套件方法:
最常見的擴充套件方法是linq標準查詢運算子,它將查詢功能新增到現有的system.collections.ienumerable和system.collection.generic.ienumerable型別。若要使用標準查詢運算子,請先使用using system.linq指令將它們置於範圍內。然後,任何實現了ienumerable的型別看起來都具有groupby,order等例項方法。
class如何增加乙個擴充套件方法?extensionmethods2
;
var result = ints.orderby(g =>g);
foreach (var i in
result)
} }//
output: 10 15 21 26 39 45
一、定義乙個測試型別,其中包含乙個例項方法,如下:
usingview codesystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
demo_extensionmethod2}}
二、定義乙個擴充套件型別,其中包含乙個擴充套件方法,以後如需新增擴充套件方法,在該類中新增方法放即可,主要要定義為static型別,如下:
usingview codesystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
namespace
demo_extensionmethod2.extensionmethods}}
三、使用時,切記要新增對擴充套件方法的引用,否則編譯不過,如下:
usingview codesystem;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading.tasks;
using
demo_extensionmethod2.extensionmethods;
namespace
demo_extensionmethod2}}
參考:
C 中的擴充套件方法
c 中的擴充套件方法用來為現有型別新增方法,以擴充套件現有的型別,這些型別可以是基本的資料型別 如int string等 也可以是自己定義的型別。擴充套件方法是通過指定關鍵字this修飾方法的第乙個引數而宣告的。擴充套件方法只可以宣告在靜態類中。以下為擴充套件基本型別string public st...
C 中的擴充套件方法
擴充套件方法的目的就是向乙個現有型別中新增方法,現有型別可以是已存在的型別,比如int,string等資料型別,也可以是我們自定義的資料型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。某個已經存在資料型別,該型別下的方法無法滿足我們的需求,這個時候就需要我們自己...
C 中擴充套件方法應用
擴充套件方法是c 3.0 中新增特性,可在不修改源類 情況,通過add file 模式對源 功能擴充套件。擴充套件方法要求如下 a.擴充套件方法需包含在 static 修飾類中.b.擴充套件實現需是靜態形式。c.擴充套件方法第乙個引數 字首為 this 表示需要擴充套件類物件,從第二個引數開始,為擴...