参考:
博客园:http://www.cnblogs.com/suger/archive/2012/05/13/2498248.html
MSDN的开编语句:
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。 扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。
开始上代码:
1.首先创建一个控制台应用程序。
在Program.cs中定义一个字符串转换为整数的实例方法。
如何实例方法在同一个类下,则直接strToInt(str) 就可以实现转换了。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ExtensionMethodsTest
{
class Program
{
static void Main(string[] args)
{
string str = "50";
Program pm = new Program();
//实例方法
int ret = pm.strToInt(str);
Console.WriteLine("ok");
Console.ReadKey();
}
/// <summary>
/// 字符串转为整数的实例方法
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public int strToInt(string str)
{
int id;
int.TryParse(str, out id);
return id;
}
}
}
2、静态方法创建
先创建一个类库ExtensionMethodCommon;然后在该类库下创建一个静态类ExtensionMethods;在该类下创建一个静态方法ToInt(this string str,int numberOne ,int numberTwo)。
扩展方法被定义为静态方法,但它们通过实例方法语法进行调用。它们的第一个参数制定该方法作用于哪个类型,并且该参数以this修饰符为前缀。
ExtensionMethods里有一个ToInt的静态方法,他接收一个自身参数this,类型为string,this string必须在方法参数的第一个位置,其他参数必须在this string 参数后面。
这句话什么意思,即你需要对string扩展一个ToInt方法,
this是string实例化后的对象(下边第三点的代码中,string str = "50"; int result = str.ToInt(10, 5); 此时this就是str)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
na