编写一个类,可以继承其他类,但当不能使用继承类时,则可以使用扩展方法。
扩展方法是静态方法,它是类的一部分,但实际上没有放在类的源代码中。
怎么使用
假设希望用一个方法扩展string类型,该方法计算字符串中的单词数。
public static class StringExtension
{
public static int GetWordCount(this string s) => s.Split().Length;
}
使用this关键字和第一个参数来扩展字符串。这个关键字定义了要扩展的类型。
即使扩展方法是静态的,也要使用标准的实例方法语法。
string fox = "the quick brown fox jumped over the lazy dogs down " +"9876543210 times";
int wordCount = fox.GetWordCount();
//注意,这里使用fox变量而没有使用类型名来调用GetWordCount ()。
//在后台,编译器把它改为调用静态方法:
int wordCount = StringExtension.GetWordCount(fox);
this
this关键字必须匹配类型的扩展方法,而且需要打开定义扩展方法的静态类所在的名称空间。
如果把StringExtensions类放在名称空间Wrox. Extensions中,则只有用using指令打开Wrox.Extensions,编译器才能找到GetWordCount方法。