扩展方法: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 } }