以下是常規獲取現在時間的乙個方法。當有一天這個"yyyy-mm-dd"格式,有個需求需要在一千個方法中實現,你確定要寫上一千次?不會吧!於是得想辦法格式化一次便能達到目的。
1///2
///靜態方法,便於在main函式中呼叫.
3///
4static
void
extmethod()
5
你會想到寫乙個靜態類,靜態方法。於是馬不停蹄的新建類··· 新建方法···
1///2
///靜態類,靜態方法
3///
4public
static
class
extmehtodhelp
511 }
然後在extmethod()方法中,便可以通過靜態類點出靜態方法。然後你在這一千個方法中都呼叫了這個靜態方法。
1///2
///靜態方法,便於在main函式中呼叫.
3///
4static
void
extmethod()
5
靜態類點出靜態方法,確是無可厚非的。
如果有一種更簡單的方法通過 datetime 的 now 變數直接點出方法 fmtyyyymmdd 的話。那多好哇,類名都用不著記了!
也可以認為 now 是乙個例項,想要在例項上點出方法,那麼必須是例項方法。而datetime是微軟封裝好的**,我們無法改動,所以
無法往類裡面新增方法。然而現在又有這麼乙個需求,所以提供了一種方法叫做擴充套件方法。
1///2
///擴充套件方法的必要條件
3///
1、此方法必須是乙個靜態方法
4///
2、此方法必須放到靜態類中
5///
3、方法的第乙個引數要以this開頭,後面跟著此擴充套件方法所在的型別引數
6///
7public
static
class
extmehtodhelp
815 }
於是在呼叫的時候就可以直接通過 now.fmtyyyymmdd 來獲取。在now點方法的時候,fmtyyyymmdd方法前面是有乙個向下的箭頭,表示此為擴充套件方法。
1///2
///靜態方法,便於在main函式中呼叫.
3///
4static
void
extmethod()
5
給擴充套件方法加多乙個引數,這便是擴充套件方法的真正引數
1///2
///擴充套件方法的另外乙個引數,才是他的真正引數
3///
4public
static
class
extmehtodhelp510
11 }
1///2
///靜態方法,便於在main函式中呼叫.
3///
4static
void
extmethod()
5
總結:通過反編譯工具可看出,擴充套件方法其本質是靜態方法。編譯器認為乙個表達方式是要使用乙個例項方法,但是沒有找到,就會檢查匯入的命名空間和當前命名空間裡所有的擴充套件方法,並匹配適合的方法
.method private hidebysig staticvoid
extmethod() cil managed
擴充套件方法的必要條件
1、此方法必須是乙個靜態方法
2、此方法必須放到靜態類中
3、方法的第乙個引數要以this開頭,後面跟著此擴充套件方法所在的型別引數
特點:(這裡沒有演示)
1、擴充套件方法與例項方法可以構造成過載
2、如果擴充套件方法的名稱和引數與例項方法相同,則例項方法的優先順序高於擴充套件方法來呼叫
3、擴充套件在父介面或父類上的擴充套件方法,在子類的例項中也可以呼叫
linux C 擴充套件語法1 內聯函式方法簡介
今天看了乙份美國人寫的linux下的c語言 感觸挺深 1.一些inline 內聯函式 通常寫在 標頭檔案中 既 h 檔案中 2.這些inline函式在標頭檔案中定義,應該加入static關鍵字。使其在包含此檔案的.c檔案中變為本地變數,否則 如果不定義為static 在連線的時候可能出現多處定義的錯...
擴充套件Backus Naur正規化簡介
擴充套件backus naur正規化是一種電腦科學的元語法,用於定義許多網際網路協議,包括sip。它的原始定義規範是在rfc 822,說明如何解析文字訊息。最新定義版本是rfc 5234。abnf使用乙個7位的ascii字符集,並定義了字串的匹配規則。例如 message request respo...
Oracle擴充套件PL SQL簡介 四
本來接下來要講一下陣列型別,但內容很多,因此放到後面 5.pl sql游標 游標 用來查詢資料庫,獲取記錄集合 結果集 的指標,當在pl sql塊中執行查詢語句select和資料操縱語句dml時,oracle會為其分配上下文區 context area 游標指上下文區指標,對於資料操縱語句和單行se...