c 擴充套件方法

2021-08-21 07:52:39 字數 1761 閱讀 3058

被定義為

靜態方法

,但它們是通過

例項(物件)

方法語法進行呼叫的。 它們的第乙個引數指定該方法作用於哪個型別,

呼叫時第乙個引數不用傳遞

,並且該引數以

this 修飾符

為字首。 擴充套件方法當然不能破壞物件導向封裝的概念,所以只能是訪問所擴充套件類的public成員。

擴充套件方法使您能夠向現有型別「新增」方法,而無需建立新的派生型別、重新編譯或以其他方式修改原始型別。擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。

c#擴充套件方法

第乙個引數指定該方法作用於哪個型別

,並且該引數以 this 修飾符為字首。

擴充套件方法的目的就是為乙個現有型別(包括自己定義的和系統自帶的)新增乙個方法,現有型別既可以是int,string等資料型別,也可以是自定義的資料型別。

為資料型別的新增乙個方法的理解:一般來說,int資料型別有個tostring的方法,就是把int 資料轉換為字串的型別,比如現在我們想在轉換成字串的時候還新增一點東西,比如增加乙個字元 a .那麼之前的tostring就不好使了,因為它只是它我們的int資料轉換為string型別的,卻並不能新增乙個字母 a.所以這就要用到所謂的擴充套件方法了。

首先我們看乙個給現有的型別增加乙個擴充套件方法。

我們想給string 型別增加乙個add方法,該方法的作用是給字串增加乙個字母a.

//必須是靜態類才可以新增擴充套件方法

static

class

program

//宣告擴充套件方法

//擴充套件方法必須是靜態的,add有三個引數

//this 必須有,string表示我要擴充套件的型別,stringname表示物件名

//三個引數this和擴充套件的型別必不可少,物件名可以自己隨意取如果需要傳遞引數,//再增加乙個變數即可

public

static

string

add(this

string stringname)

}

public

class

student

public

string

getstuinfo(string stuname, string stunum)

\n" +

"學號:", stuname, stunum);}}

public

static

class

extensionstudentinfo

//宣告擴充套件方法

//要擴充套件的方法必須是靜態的方法,add有三個引數

//this 必須有,string表示我要擴充套件的型別,stringname表示物件名

//三個引數this和擴充套件的型別必不可少,物件名可以自己隨意取如果需要傳遞引數,在此我們增加了兩個string型別的引數

public

static

string

extensiongetstuinfo(this student student, string stuname, string stunum)

}以上的工作做完之後便可以使用我們的擴充套件方法了,注意必須要用物件來呼叫擴充套件方法。

static

void

main(string args)

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

c 語言從3.0開始增加了乙個很特別的功能 擴充套件方法。那麼擴充套件方法起什麼作用呢?很多時候我們想為已經存在的類擴充套件某些功能,而又沒有必要去繼承該類,甚至有時候這個類根本就不允許繼承,如string類,這時候就可以使用擴充套件方法來為其擴充套件功能。下面舉例說明 一 我們建立乙個類庫如下 c...

C 擴充套件方法

使用 net 3.0之後,我一直都覺得有種方法很奇怪,這種方法在一般的方法前面多了乙個藍色的向下箭頭。這種方法其實是擴充套件方法,這種擴充套件方法不需要去修改原類。class program public static class extendfunction 例子中我定義了乙個擴充套件方法,這個方...