[C#]擴充方法

  • 851
  • 0
  • C#
  • 2020-06-29

什麼是擴充方法?

相信大家在寫程式的時候,都有用過Array或List<>,也知道它們有許多的擴充方法可以用。
但是有些人會誤認為這些擴充方法是隸屬於Array或List<>物件,但是其實不是,這些擴充方法均隸屬於Enumerable這個靜態類別
既然知道了擴充方法是隸屬於靜態類別,所以說,如果今天我要自己宣告並定義某個目標類別的擴展方法,當然它必定也隸屬於靜態類別囉~

接下來,來看宣告並定義擴展方法的步驟吧!

  1. 宣告一個靜態類別,假設說我想對string類別增加擴展方法的功能,我可以將類名命名為StringExtension。
  2. 宣告一個公有的靜態方法,第一個參數 要有 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!