Überladen von Membern

Beim Überladen von Membern werden zwei oder mehr Member für denselben Typ erstellt, die sich nur im Hinblick auf die Anzahl oder den Typ von Parametern unterscheiden, jedoch über denselben Namen verfügen. Nachfolgend wird z. B. die WriteLine-Methode überladen:

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

Da nur Methoden, Konstruktoren und indizierte Eigenschaften Parameter aufweisen können, ist ein Überladen nur bei diesen Membern möglich.

Das Überladen ist eine der wichtigsten Methoden, um die Nutzbarkeit, Produktivität und Lesbarkeit wiederverwendbarer Bibliotheken zu verbessern. Durch ein Überladen bei der Parameteranzahl können einfachere Versionen von Konstruktoren und Methoden bereitgestellt werden. Das Überladen beim Parametertyp ermöglicht die Verwendung desselben Membernamens für Member, die identische Vorgänge für einen bestimmten Satz unterschiedlicher Typen ausführen.

✔️ Versuchen Sie, beschreibende Parameternamen zu verwenden, um den von kürzeren Überladungen verwendeten Standard anzugeben.

❌ Vermeiden Sie in Überladungen beliebig variierende Parameternamen. Wenn ein Parameter in einer Überladung dieselbe Eingabe darstellt wie ein Parameter in einer anderen Überladung, sollte der Name der beiden Parameter identisch sein.

❌ Vermeiden Sie eine inkonsistente Reihenfolge bei Parametern in überladenen Membern. Parameter mit demselben Namen sollten in allen Überladungen an derselben Position stehen.

✔️ Legen Sie nur die längste Überladung als virtuell fest (wenn Erweiterbarkeit erforderlich ist). Kürzere Überladungen sollten lediglich eine längere Überladung aufrufen.

❌ Verwenden Sie KEINE ref- oder out-Modifizierer zum Überladen von Membern.

Bei einigen Sprachen können Aufrufe dieser Überladungen nicht aufgelöst werden. Außerdem unterscheidet sich die Semantik dieser Überladungen üblicherweise stark, sodass es sich nicht um Überladungen, sondern um zwei separate Methoden handeln sollte.

❌ Verwenden Sie KEINE Überladungen mit Parametern an derselben Position und ähnlichen Typen, die über eine unterschiedliche Semantik verfügen.

✔️ Lassen Sie zu, dass null für optionale Argumente übergeben werden kann.

✔️ Nutzen Sie das Überladen von Membern, anstatt Member mit Standardargumenten zu definieren.

Standardargumente sind nicht CLS-kompatibel.

Teile ©2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.

Nachdruck mit Genehmigung von Pearson Education, Inc aus Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition von Krzysztof Cwalina und Brad Abrams, veröffentlicht am 22. Oktober 2008 durch Addison-Wesley Professional als Teil der Microsoft Windows Development Series.

Weitere Informationen