前言:
學習除了要堅持不懈,還需要有好的方法!總結整理自己學習 的資料能使得所學的內容條理清晰,尋找回顧也很方便!俗話說的好:“ 好記性不如爛筆頭”;以前很多知識都是看過後,過一段時間就忘記,時 間花下去了,但效果甚微;看的多,但雜而不精;這些都是沒有做筆記,沒有深 入學習而導致的時間與精力的浪費,因此每個研究課題,都要好好整理資料,做 一個系列的研究!
三.擴充方法 (續接上一編)
擴充方法定義如 下:
public static class Extensions{
public static void Foo(this string s) {
…
}
}
使用:
String s=“Hello,World”;
s.Foo();
我們以 前會對一些參數、對象進行某些處理,而寫一些獨立方法來封裝這些處理語句; 這些方法為了方便重用,可能會寫在一些公用類裡供大家調用,例如:
定義一個公用方法計算每天有多少分鐘,
public class PublicCenter
{
//傳入參數為天數
public long GetDaysMin(int pDays)
{
return pDays * 24 * 60;
}
}
外部使用調用:
int days = 3;
PublicCenter pCenter = new PublicCenter();
int minutes = pCenter.GetDaysMin(days);
我想大家對上面這段代 碼的使用都非常熟悉,以前這樣處理的情況非常的多!現在我們看看用擴充方法 來處理會是怎麼樣;
定義一個靜態類的靜態方法計算每天有多少 分鐘(注意必須是靜態)
public staticclass PublicCenter
{
//傳入參數為天數(注意this關鍵字必不可少)
public staticlong GetDaysMin( this int pDays)
{
return pDays * 24 * 60;
}
}
外部使 用調用:(注意靜態類必須同在一個命名空間,或添加引用,這個大家應該也知 道的(囉嗦))
int days = 3;
//當我們在所以int類型的變數後按 下".",就會智能提示出這些自己寫的擴充方法GetDaysMin()。
int minutes = days.GetDaysMin()
大家可以看出擴充方法的 本質為將執行個體方法調用在編譯期改變為靜態類中的靜態方法調用。
MSDN 中對擴充方法的定義是:擴充方法使您能夠向現有類型“添加”方法 ,而無需建立新的衍生類別型、重新編譯或以其他方式修改原始類型。