static class MyExtensions
{
public static void DisplayDefiningAssembly(this object obj)
{
// 该方法允许任意object显示它被定义的程序集
Console.WriteLine("{0} lives here:\n\t->{1}\n", obj.GetType().Name, Assembly.GetAssembly(obj.GetType()));
}
public static int ReverseDigits(this int i)
{
char[] digits = i.ToString().ToCharArray(); // 先转换为string,再存到数组中
Array.Reverse(digits); // 逆序排列
string newDigits = new string(digits);
return int.Parse(newDigits); // 以int类型返回
}
public static void Foo(this int i)
{
//Int32 类型拥有的Foo()方法
Console.WriteLine("{0} rings the bell.", i);
}
public static void Foo(this int i, string message)
{
//重载的 Foo() 方法
Console.WriteLine("{0} rings the bell and said: {1}", i, message);
}
}
可以看到所有方法的第一个参数具有一个this关键字。第一个方扩展的是System.Object,而第二个方法则只能扩展整型,如果一个非整型试图调用这个方法,将会得到一个编译时错误。一个扩展方法可以拥有多个参数,但只有第一个需要加this,这在后面被重载的方法里可以看到。
另外一个要注意的问题是,带有扩展方法的类不能嵌套在另一个类中,它必须是顶层类。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12641349/viewspace-145388/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/12641349/viewspace-145388/