1. 擴充套件方法的定義
通過前一節的例項學習,我們了解到:擴充套件方法是一種特殊的靜態方法,但可以像擴充套件型別上的例項方法一樣進行呼叫。使用擴充套件方法,可以向現有型別「新增」方法。
下面,再給出乙個例項,希望通過對這個例項的學習,能進一步加深對擴充套件方法的理解。
首先,建立擴充套件方法:
public static class extendfunction
}
接下來,新增方法呼叫的**:
static void main(string args)
執行程式,得到以下結果:
在這個例項中,擴充套件方法接收的引數型別為object,所以,對於任意的 object 使用這個方法應該都是合法的。於是,在前面**的基礎上,增加乙個testclass類,並使用該類的例項來呼叫這個方法,看看結果如何。新的**如下:
class testclass
public int age
public string ***
public bool ismarried
public string note
public testclass()
} class program
}
執行結果如下:
很顯然,使用自己定義的類的例項來呼叫這個方法也是可行的,只是,輸出的是類的名稱資訊,要想輸出類的成員資訊,可以使用下面的**:
testclass.name.print();
testclass.age.print();
testclass.***.print();
testclass.ismarried.print();
testclass.note.print();
再次執行程式,結果為:
這樣,類的成員資訊也可以被輸出了。
這裡可能會用人問,我們使用testclass
.print()
可不可以呢?結果很顯然,各位,你們說呢。
2.擴充套件方法跟普通的例項方法又有什麼區別?
對於用 c# 編寫的**,呼叫擴充套件方法與呼叫在型別中實際定義的方法之間沒有明顯的差異。
3.什麼樣的方法可以作為擴充套件方法呢?
這種方法,必須具備以下幾個特徵:
l 它必須在乙個非巢狀的,非泛型的靜態類中;
l 它至少要有乙個引數;
l 第乙個引數必須附上this關鍵字作為字首;
l 第乙個引數不能有其他任何修飾符(如out或ref);
l 第乙個引數的型別不能是指標型別。
今天,就講到這裡,下一節,我們將會通過乙個例項,來學習擴充套件方法何時被呼叫。
置頂 輕量級語言Lua入門
作為乙個指令碼愛好者,而且是指令碼 perl 起家的我,一有空就喜歡學習下這些指令碼語言。據說魔獸世界 憤怒小鳥都用到了它,所以今天研究下lua這個叫法有點奇特的指令碼 一.lua簡介 lua 是乙個小巧的指令碼語言。作者是巴西人 好像還沒有接觸過巴西人 該語言的設計目的是為了嵌入應用程式中,從而為...
置頂 收集 Linq 查詢方法收集
開始不間斷收集linq查詢使用的方法,日拱一卒,月可渡江。查詢排序取前6個 var newshops storedb.shops.orderbydescending a a.joindate take 6 tolist 查詢列表 常用用法 var order from u in storedb.or...
置頂 傾情大奉送 Spark入門實戰系列
位址為 密碼 9xjt 本系列部落格在和csdn首發,位址為 csdn 以下為該系列文章列表 1.spark及其生態圈簡介 2.spark編譯與部署 上 基礎環境搭建 2.spark編譯與部署 中 hadoop編譯安裝 2.spark編譯與部署 下 spark編譯安裝 3.spark程式設計模型 上...