Überladen von MembernMember Overloading

Das Überladen von Elementen bedeutet, dass zwei oder mehr Member für denselben Typ erstellt werden, die sich nur in der Anzahl oder dem Typ der Parameter unterscheiden, aber denselben Namen aufweisen.Member overloading means creating two or more members on the same type that differ only in the number or type of parameters but have the same name. Im folgenden Beispiel wird die- WriteLine Methode überladen:For example, in the following, the WriteLine method is overloaded:

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

Da nur Methoden, Konstruktoren und indizierte Eigenschaften über Parameter verfügen können, können nur die Elemente überladen werden.Because only methods, constructors, and indexed properties can have parameters, only those members can be overloaded.

Überladen ist eine der wichtigsten Techniken zur Verbesserung der Benutzerfreundlichkeit, Produktivität und Lesbarkeit von wiederverwendbaren Bibliotheken.Overloading is one of the most important techniques for improving usability, productivity, and readability of reusable libraries. Das Überladen der Anzahl von Parametern ermöglicht die Bereitstellung einfacherer Versionen von Konstruktoren und Methoden.Overloading on the number of parameters makes it possible to provide simpler versions of constructors and methods. Das Überladen für den Parametertyp ermöglicht die Verwendung desselben Element namens für Member, die identische Vorgänge für einen ausgewählten Satz von unterschiedlichen Typen ausführen.Overloading on the parameter type makes it possible to use the same member name for members performing identical operations on a selected set of different types.

versuchen Sie ✔️, beschreibende Parameternamen zu verwenden, um den von kürzeren über Ladungen verwendeten Standardwert anzugeben.✔️ DO try to use descriptive parameter names to indicate the default used by shorter overloads.

❌Vermeiden Sie beliebig abweichende Parameternamen in über Ladungen.❌ AVOID arbitrarily varying parameter names in overloads. Wenn ein Parameter in einer Überladung dieselbe Eingabe wie ein Parameter in einer anderen Überladung darstellt, sollten die Parameter denselben Namen haben.If a parameter in one overload represents the same input as a parameter in another overload, the parameters should have the same name.

❌Vermeiden Sie eine Inkonsistenz bei der Reihenfolge von Parametern in überladenen Elementen.❌ AVOID being inconsistent in the ordering of parameters in overloaded members. Parameter mit dem gleichen Namen sollten in allen über Ladungen an derselben Position angezeigt werden.Parameters with the same name should appear in the same position in all overloads.

✔️ machen nur die längste Überladung virtuell (wenn Erweiterbarkeit erforderlich ist).✔️ DO make only the longest overload virtual (if extensibility is required). Kürzere über Ladungen sollten einfach bis zu einer längeren Überladung aufrufen.Shorter overloads should simply call through to a longer overload.

❌Verwenden Sie keine- ref oder- out Modifizierer, um Member überladen.❌ DO NOT use ref or out modifiers to overload members.

Einige Sprachen können keine Aufrufe von über Ladungen wie diesem auflösen.Some languages cannot resolve calls to overloads like this. Außerdem verfügen solche über Ladungen in der Regel über eine ganz andere Semantik und sollten wahrscheinlich nicht über Ladungen, sondern auch über zwei separate Methoden verfügen.In addition, such overloads usually have completely different semantics and probably should not be overloads but two separate methods instead.

❌Sie verfügen über keine über Ladungen mit Parametern an derselben Position und ähnlichen Typen, die noch über eine andere Semantik verfügen.❌ DO NOT have overloads with parameters at the same position and similar types yet with different semantics.

✔️ zulassen null , dass optionale Argumente übermittelt werden.✔️ DO allow null to be passed for optional arguments.

✔️ Verwenden Sie überladen von Elementen, anstatt Member mit Standardargumenten zu definieren.✔️ DO use member overloading rather than defining members with default arguments.

Standardargumente sind nicht CLS-kompatibel.Default arguments are not CLS compliant.

Teile © 2005, 2009 Microsoft Corporation. Alle Rechte vorbehalten.Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

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.Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

Siehe auchSee also