扩展方法能够向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法必须是静态方法,可以像实例方法一样进行调用。且调用同名中实际定义的方法优先级要高于扩展方法。
这里我定义了一个测试类,IsValidEmailAddress方法作为string类型的扩展方法。当中第一个参数前面出现一个this,这表示对string中添加扩展方法
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 的字符串点击就可以出现方法调用
1 string a = string.Empty; 2 bool ty= a.IsValidEmailAddress();
在我们实际应用中也很广泛,举个我们常用的例子:linq标准查询,或者找到Queryable类