在开发过程中,经常需要对相同的某个类型的数据进行处理。譬如:字符串自定义转化、时间格式的自定义转化等。
按照正常的开发我们需要定义一个方法,用原始的数据作为参数实体,然后在方法内部处理,然后返回处理之后的参数;
如:需要对一个字符串处理处理成int类型,如果字符串合法则返回数据,如果不合法则返回0。开发代码如下:
public class Program
{
/// <summary>
/// 方法如下
/// </summary>
/// <param name="inputNum"></param>
/// <returns></returns>
private static int GetNum(string inputNum)
{
int result;
int.TryParse(inputNum, out result);
return result;
}
/// <summary>
/// 测试
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
string test1 = "123";
Console.WriteLine(GetNum(test1));
}
}但是能否有其他更“高大上”的方法呢:我们可以扩展方法。对字符串String扩展方法。代码如下:
/// <summary>
/// 扩展类
/// </summary>
public static class SupExtString
{
public static int ToInt(this string inputNum)
{
int result=0;
int.TryParse(inputNum, out result);
return result;
}
}然后调用类如下:
public class Program
{
/// <summary>
/// 测试
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
string test1 = "123";
Console.WriteLine(test1.ToInt());
}
}在扩展方法的时候需要注意事项如下:
1.扩展方法必须在静态类中。
2.扩展方法必须是静态方法。
3.需要扩展的数据类型应用this关键字修饰并作为第一个参数传递。
4.如果扩展方法有参数时:参数要放到this修饰的参数之后。(上述例子是0参的实现方式);
5.引用的时候需要应用到扩展类的命名空间即可。