擴展方法:this
擴展方法是C#3.0的新特性,能夠經過爲已知類型添加新方法來到到擴展類型的目的,同時不需對此類型作任何改動。編譯器
重點記住的是,定義爲靜態方法的擴展方法只能在經過using指令顯示地將名稱空間導入到應用程序代碼中後才能被調用。string
LINQ包含最多見的擴展方法,也就是所說的標準查詢操做符。標準查詢操做符擴展了IEnumerable<T>和IQueryable兩種類型。it
代碼中須要使用實例方法來調用擴展方法,而後編譯器產生的中間語言(IL)會把代碼轉換成爲對靜態方法的調用。io
若是必定要使用擴展方法,牢記下面幾點:編譯
1.若是定義的擴展方法同在該類型中已經存在的方法具備相同的名稱,那麼此擴展方法將永遠不會調用。(方法不要重名)。class
2.擴展方法僅在命名空間的層次上才能被引入並得以使用。email
代碼奉上(結合上一篇)擴展
public static class MyExtensions
{
public static bool IsValidEmail(this string email)
{
Regex exp = new Regex(@"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$");
return exp.IsMatch(email);
}
}foreach
DataContext context = new DataContext(connectionString); Table<Contack> contacts = context.GetTable<Contack>(); var query = from s in contacts.AsEnumerable() select new { s.EmailAddress }; foreach (var item in query) { if (item.EmailAddress.IsValidEmail())//這裏調用了一下上面寫的擴展方法 { System.Console.WriteLine(item.EmailAddress);//這裏就是篩選後的email } }