擴展方法可以向現有類型「添加」方法,而無需建立新的派生類型,從新編譯或以其餘方式修改原始類型。擴展方法必須是靜態方法,能夠像實例方法同樣進行調用。且調用同名中實際定義的方法優先級要高於擴展方法。測試
這裏我定義了一個測試類,IsValidEmailAddress方法做爲string類型的擴展方法。當中第一個參數前面出現一個this,這表示對string中添加擴展方法this
1 public static class TestOne 2 { 3 public static bool IsValidEmailAddress(this string s) 4 { 5 6 Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$"); 7 8 return regex.IsMatch(s); 9 10 } 11 12 }
在調用時,不須要傳參數,直接在在類型爲string 的字符串點擊就能夠出現方法調用spa
1 string a = string.Empty; 2 bool ty= a.IsValidEmailAddress();
在咱們實際應用中也很普遍,舉個咱們經常使用的例子:linq標準查詢,或者找到Queryable類code