面试题答案
一键面试使用扩展方法实现功能增强示例
假设我们有一个第三方库中的String
类,我们想为其添加一个判断字符串是否为数字的扩展方法。
public static class StringExtensions
{
public static bool IsNumeric(this string str)
{
double result;
return double.TryParse(str, out result);
}
}
在使用时:
string testStr = "123";
bool isNumeric = testStr.IsNumeric();
扩展方法相比继承的优势
- 不破坏封装性:继承需要创建一个新的子类,可能会暴露父类一些不应该被外部访问的成员。而扩展方法是在外部定义,不影响第三方库类的内部结构和封装性。
- 无需修改第三方库代码:继承可能需要对第三方库代码进行修改以支持继承体系,这在实际项目中通常不允许。扩展方法可以在不改变第三方库的情况下添加功能。
- 灵活性更高:对于已经存在的多个第三方库类实例,可以根据需要随时调用扩展方法,而继承则需要为每个需要增强功能的类创建特定的子类,较为繁琐。