码迷,mamicode.com
首页 > 其他好文 > 详细

扩展方法

时间:2014-06-14 08:26:45      阅读:287      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   code   ext   color   

判断一个字符串是否是正确的Email地址:IsEmail.在string的类型定义时添加这个方法不也行吗?正式因为微软没有提供这个方法,咱们才需要给它“增加”IsEmail“方法。

  1. StringHelper类上标注static变成静态类,方法是静态方法--------------由于静态类不能new,所以也就不能声明非static成员(实例成员)
  2. 所有函数的第一个参数是被扩展的对象,前面标注this。
  3. 使用扩展方法的时候必须保证扩展方法类已经在当前代码中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 StringHelper
10     {
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 Program
10     {
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扩展类的namespace
21             if (s.IsEmail())
22             {
23 
24             }
25 
26             Console.ReadKey();
27         }
28     }
29 }

 

扩展方法,布布扣,bubuko.com

扩展方法

标签:style   class   blog   code   ext   color   

原文地址:http://www.cnblogs.com/skyl/p/3787872.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!