Überladen von MembernMember Overloading

Überladen von Membern bedeutet das Erstellen von zwei oder mehr Elemente auf dem gleichen Typ, die unterscheiden sich nur hinsichtlich der Anzahl oder den Typ der Parameter, aber den gleichen Namen haben.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. Z. B. im folgenden die WriteLine -Methode ist ü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 Parameter verfügen können, können nur für 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. Auf der Anzahl von Parametern überladen ermöglicht es, einfachere Versionen von Konstruktoren und Methoden enthalten.Overloading on the number of parameters makes it possible to provide simpler versions of constructors and methods. Für den Parametertyp überladen ermöglicht die mit dem gleichen Elementnamen für Elemente, die identische Vorgänge für eine ausgewählte Gruppe verschiedener Typen.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.

✓ DO versuchen, beschreibende Parameternamen zu verwenden, um anzugeben, die Standardeinstellung von kürzeren Überladungen verwendet.✓ DO try to use descriptive parameter names to indicate the default used by shorter overloads.

X AVOID nach dem Zufallsprinzip varying Parameternamen in Überladungen.X AVOID arbitrarily varying parameter names in overloads. Wenn ein Parameter in einer Überladung dieselbe Eingabe als Parameter in eine andere Überladung darstellt, sollte der Parameter den gleichen Namen aufweisen.If a parameter in one overload represents the same input as a parameter in another overload, the parameters should have the same name.

X AVOID Mitglieder überlastet werden in der Reihenfolge der Parameter in inkonsistent.X AVOID being inconsistent in the ordering of parameters in overloaded members. Parameter mit dem gleichen Namen in der gleichen Position in der alle Überladungen angezeigt.Parameters with the same name should appear in the same position in all overloads.

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

X DO NOT verwenden ref oder out Modifizierer zum Überladen von Membern.X DO NOT use ref or out modifiers to overload members.

Aufrufe der Überladungen wie folgt können nicht bei einigen Sprachen aufgelöst werden.Some languages cannot resolve calls to overloads like this. Darüber hinaus sollte solche Überladungen in der Regel völlig unterschiedliche Semantiken und wahrscheinlich nicht Überladungen jedoch zwei separate Methoden stattdessen.In addition, such overloads usually have completely different semantics and probably should not be overloads but two separate methods instead.

X DO NOT Überladungen mit Parametern, die an der gleichen Position und ähnliche Typen noch mit einer anderen Semantik haben.X DO NOT have overloads with parameters at the same position and similar types yet with different semantics.

✓ DO zulassen null für optionale Argumente übergeben werden soll.✓ DO allow null to be passed for optional arguments.

✓ DO verwenden Member überladen, anstatt Elemente mit Standardargumenten 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