擴充套件方法簡介

2022-03-02 14:11:55 字數 2062 閱讀 1526

以下是常規獲取現在時間的乙個方法。當有一天這個"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 static

void

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...