This article has been localized into Chinese by the community.
C# 3.0:
扩展方法
C# 3.0提供的另一个有用的功能是扩展方法。它们可以给已经存在的类型增加新的功能,而不需去建子类型或重新编译原始类型。比如,你想判断某个字符串是不是一个数字,通常的做法是建立一个函数并且调用它。而你有了许多这样的函数时,你可以把它们放到一个utility类里面,如下:
public class MyUtils
{
public static bool IsNumeric(string s)
{
float output;
return float.TryParse(s, out output);
}
}
现在你可以用1行代码来检查一个字符串:
string test = "4";
if (MyUtils.IsNumeric(test))
Console.WriteLine("Yes");
else
Console.WriteLine("No");
要是有了扩展方法的话,你可以扩展String类来直接支持这个检查。你可以声明一个static的类,里面是一些static的方法以构成你的扩展方法库。这是一个例子:
public static class MyExtensionMethods
{
public static bool IsNumeric(this string s)
{
float output;
return float.TryParse(s, out output);
}
}
与其它static方法区分开的唯一不同之处是,方法的参数里面的this关键字。它告诉编译器这是string类的一个扩展方法。这就是你创建一个扩展方法所需要做的全部事情。现在,你可以直接调用那些string的IsNumeric() 方法了,就像这样:
string test = "4";
if (test.IsNumeric())
Console.WriteLine("Yes");
else
Console.WriteLine("No");
This article has been fully translated into the following languages:
Is your preferred language not on the list? Click here to help us translate this article into your language!