什麼是擴充方法?
相信大家在寫程式的時候,都有用過Array或List<>,也知道它們有許多的擴充方法可以用。
但是有些人會誤認為這些擴充方法是隸屬於Array或List<>物件,但是其實不是,這些擴充方法均隸屬於Enumerable這個靜態類別。
既然知道了擴充方法是隸屬於靜態類別,所以說,如果今天我要自己宣告並定義某個目標類別的擴展方法,當然它必定也隸屬於靜態類別囉~
接下來,來看宣告並定義擴展方法的步驟吧!
- 宣告一個靜態類別,假設說我想對string類別增加擴展方法的功能,我可以將類名命名為StringExtension。
- 宣告一個公有的靜態方法,第一個參數 要有 this 關鍵字修飾(從code的字面義讀起來就是此物件的擴展方法,"但只是字面義"。
直接用一個例子來實作,會更容易了解。
為string類別寫一個擴充方法名叫isEmail,當我們為string參數賦值就可以調用isEmail這個擴充方法來驗證傳入的string是否為合法的Email?
//宣告靜態類別與靜態擴充方法
static class StringExtension
{
public static bool IsEmail(this string input)
{
if (input.Contains('@') && input.Contains(".com"))
{
return true;
}
else
{
return false;
}
}
}
在主程式中就可以調用isEmail這個擴充方法了,如下:
string test = "ching89118@gmail.com";
bool result = test.IsEmail();
Console.WriteLine(result);
運行結果:true
bool result = test.IsEmail(); 此行程式碼會讓你有IsEmail()是隸屬於test這個string類型的擴充方法,但是其實我們都知道我們先宣告了一個靜態類別,而後才有這個靜態擴充方法的,所以IsEmail()是真真切切地隸屬於StringExtension這個靜態類別。
所以大家會使用擴充方法以及知道它的來源,這樣就已足夠了!
那麼,我們下篇見!
如有敘述錯誤,還請不吝嗇留言指教,thanks!