前言:
學習除了要堅持不懈,還需要有好的方法!總結整理自己學習 的資料能使得所學的內容條理清晰,查找回顧也很方便!俗話說的好:“ 好記性不如爛筆頭”;以前很多知識都是看過後,過一段時間就忘記,時 間花下去了,但效果甚微;看的多,但雜而不精;這些都是沒有做筆記,沒有深 入學習而導致的時間與精力的浪費,因此每個研究課題,都要好好整理資料,做 一個系列的研究!
三.擴展方法 (續接上一編)
擴展方法定義如 下:
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 中對擴展方法的定義是:擴展方法使您能夠向現有類型“添加”方法 ,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。