成员重载

注释

此内容由 Pearson Education, Inc. 的许可从 框架设计指南:可重用 .NET 库的约定、习惯和模式(第 2 版)重新打印。 该版于2008年出版,此后该书已于 第三版全面修订。 此页上的一些信息可能已过期。

成员重载意味着在同一类型上创建两个或多个成员,这些成员仅与参数的数量或类型不同,但名称相同。 例如,在以下示例中,方法WriteLine被重载:

public static class Console {
    public void WriteLine();
    public void WriteLine(string value);
    public void WriteLine(bool value);
    ...
}

由于只有方法、构造函数和索引属性可以具有参数,因此只能重载这些成员。

重载是提高可重用库的可用性、工作效率和可读性的最重要技术之一。 通过对参数数进行重载,可以提供更简单的构造函数和方法版本。 通过对参数类型进行重载,可为那些针对不同类型的选定集执行相同操作的成员使用相同的成员名称。

✔️ 请务必尝试使用描述性参数名称来指示较短重载使用的默认值。

❌ 避免在重载中任意改变参数名称。 如果一个重载中的参数表示与另一个重载中的参数相同的输入,则参数应具有相同的名称。

❌ 请避免重载的成员中参数的顺序不一致。 具有相同名称的参数应出现在所有重载中的相同位置。

✔️ 请确保仅使最长的重载虚拟化(如果需要扩展性)。 较短的重载应直接调用较长的重载。

❌ 请勿使用 refout 修饰符来重载成员。

某些语言无法解析对此类重载的调用。 此外,此类重载通常具有完全不同的语义,可能不应是重载,而是两个单独的方法。

❌ 不要使用参数位置相同、类型相似但语义不同的重载。

✔️ DO 允许 null 作为可选参数传递。

✔️ 请务必使用成员重载,而不是使用默认参数定义成员。

默认参数不符合 CLS。

部分内容 © 2005, 2009 Microsoft 公司。 保留所有权利。

获得皮尔逊教育公司许可后重印自 框架设计准则:可重用 .NET 库的约定、习惯和模式 ,由 Krzysztof Cwalina 和 Brad Abrams 编写,并作为微软 Windows 开发系列中的出版物之一,于 2008 年 10 月 22 日由 Addison-Wesley Professional 出版。

另请参阅