C# 扩展方法
C# 扩展方法是使能够向现有类型“添加”方法,而无需创建新的派生类型,重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用,对于用 C# 和 Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。
实义各调用扩展方法的注意事项:
1. 定义一个静态类以包含扩展方法,而且改类必须是公开的;
2. 扩展方法是静态的,并与类有相同的可见性;
3. 扩展方法的第一个参数指定方法所操作的类型;必须以 this 修饰符开头;
4. 在调用的代码中,添加包含扩展方法的命名空间;
5. 按照与调用类型上的实例方法一样的方式调用扩展方法;
注:第一个参数不是由调用代码指定的,因为它表示正应用运算符是类型,并且编译器已经知道对象的类型 .
示例:添加一个扩展方法为,计算 N 的阶乘
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Extension;
namespace KZMethod_2
{
class Program
{
static void Main(string [] args)
{
int n = 5;
Console .WriteLine( n.Factorial());//调用扩展方法计算阶乘
Console .ReadKey();
}
}
}
namespace Extension
{
public static class ExtensionClass
{
/// <summary>
/// 求一个数的阶乘
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
public static int Factorial(this int n)
{
if (n == 0)
{
return 0;
}
if (n == 1)
{
return 1;
}
else
{
return n * Factorial(n - 1);
}
}
}
}
详情请查看: http://msdn.microsoft.com/zh-cn/library/bb383977.aspx
由于本人才疏学浅,不对之处还请大家多多指出!谢谢!