(二)初学C# 3.0之扩展方法
Blog: http://blog.163.com/tesonlau968@126
扩展方法(Extension methods)使为已存在的类型添加额外的方法成为可能而不影响原有的类型。扩展方法是一些静态方法并只能在静态类中声明,在方法的第一个参数前用this作为修饰符,表明此方法为扩展方法,调用方式类似于普通的调用实例方法。
using System;
namespace Teson
{
public static class ExtensionForString //静态类
{
public static int ToInt32(this string s) //扩展方法
{
return Int32.Parse(s);
}
public static double ToDouble(this string s) //扩展方法
{
return Double.Parse(s);
}
}
public static class ExtensionForInt //静态类
{
public static int Abs(this int i) //扩展方法
{
return Math.Abs(i);
}
}
public class Test
{
public static void Main()
{
string a="100";
int b=a.ToInt32(); //调用扩展方法,相当于ExtensionForString.ToInt32(s);
double c=a.ToDouble(); //调用扩展方法,相当于ExtensionForString.ToDouble(s);
int d=-8;
int e=d.Abs(); //调用扩展方法,相当于ExtensionForInt.Abs(d);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(e);
Console.ReadLine();
}
}
}
使用扩展方法的一些原则和建议:
1.实例本身的方法优先于扩展方法,即原类型存在与所扩展的方法相同,则优先调用实例的方法而不调用扩展方法。
2.内层命名空间的扩展方法优先于外层命名空间的扩展方法。
3.对同一类型进行扩展的扩展方法应该集中放在一个静态类中(如上述源码所示),而不应该把所有类型的扩展方法都放置于同一个静态类中。
4.扩展方法应该在实例方法无法满足需求时才使用。