首页 > 代码库 > 扩展方法
扩展方法
判断一个字符串是否是正确的Email地址:IsEmail.在string的类型定义时添加这个方法不也行吗?正式因为微软没有提供这个方法,咱们才需要给它“增加”IsEmail“方法。
- StringHelper类上标注static变成静态类,方法是静态方法--------------由于静态类不能new,所以也就不能声明非static成员(实例成员)
- 所有函数的第一个参数是被扩展的对象,前面标注this。
- 使用扩展方法的时候必须保证扩展方法类已经在当前代码中using。
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 扩展方法 8 { 9 static class StringHelper10 {11 //什么样的类声明为static方法12 //就是没有用到任何的(非static)字段、属性13 //第一个参数前加this,第一个参数类型为待扩展的类型14 public static bool IsEmail(this string s)15 {16 return s.Contains(‘@‘);17 }18 /// <summary>19 /// TryParse这个方法会返回一个布尔值,来表示解析是否成功,那么就可以免去添加异常处理代码的麻烦。20 /// </summary>21 /// <param name="s"></param>22 /// <returns></returns>23 public static bool IsNumber(this string s)24 {25 int i;26 return Int32.TryParse(s, out i);27 }28 public static string ToHanZi(this bool b)29 {30 return b ? "真" : "假";31 }32 public static string Quoted(this string s)33 {34 return "[" + s + "]";35 }36 //和上面方法构成重载,37 public static string Quoted(this string s, string q1, string q2)38 {39 return q1 + s + q2;40 }41 }42 }
应用扩展方法:
1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 namespace 扩展方法 8 { 9 class Program10 {11 static void Main(string[] args)12 {13 string s = "a@b.com";14 Console.WriteLine(s.IsEmail().ToHanZi());15 16 //不能这么使用,IsEmail()是为string类进行扩展的方法17 //s.IsNumber()的返回值是Bool类型,他没有IsEmail()方法18 //Console.WriteLine(s.IsNumber().IsEmail());19 20 //如果扩展方法的命名空间与项目不一样,必须using扩展类的namespace21 if (s.IsEmail())22 {23 24 }25 26 Console.ReadKey();27 }28 }29 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。