Dela via


Överlagring av medlemmar

Kommentar

Det här innehållet skrivs om med behörighet från Pearson Education, Inc. från Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition. Den utgåvan publicerades 2008, och boken har sedan dess reviderats helt i den tredje utgåvan. En del av informationen på den här sidan kan vara inaktuell.

Överlagring av medlemmar innebär att skapa två eller flera medlemmar av samma typ som endast skiljer sig åt i antal eller typ av parametrar men som har samma namn. I följande WriteLine exempel är metoden överbelastad:

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

Eftersom endast metoder, konstruktorer och indexerade egenskaper kan ha parametrar kan endast dessa medlemmar överbelastas.

Överlagring är en av de viktigaste teknikerna för att förbättra användbarhet, produktivitet och läsbarhet för återanvändbara bibliotek. Överlagring av antalet parametrar gör det möjligt att tillhandahålla enklare versioner av konstruktorer och metoder. Överlagring av parametertypen gör det möjligt att använda samma medlemsnamn för medlemmar som utför identiska åtgärder på en vald uppsättning av olika typer.

✔️ Försök att använda beskrivande parameternamn för att ange standardvärdet som används av kortare överlagringar.

❌ UNDVIK godtyckligt varierande parameternamn i överlagringar. Om en parameter i en överlagring representerar samma indata som en parameter i en annan överlagring bör parametrarna ha samma namn.

❌ UNDVIK att vara inkonsekvent i ordningen på parametrar i överlagrade medlemmar. Parametrar med samma namn ska visas i samma position i alla överlagringar.

✔️ Gör bara den längsta överlagringen virtuell (om utökningsbarhet krävs). Kortare överlagringar bör helt enkelt ge längre överbelastning.

❌ ANVÄND ref INTE eller out modifierare för att överbelasta medlemmar.

Vissa språk kan inte lösa anrop till överlagringar som detta. Dessutom har sådana överlagringar vanligtvis helt olika semantik och bör förmodligen inte vara överbelastningar utan två separata metoder istället.

❌ Ha INTE överlagringar med parametrar i samma position och liknande typer men med olika semantik.

✔️ null Tillåt att skickas för valfria argument.

✔️ ANVÄND överlagring av medlemmar i stället för att definiera medlemmar med standardargument.

Standardargumenten är inte CLS-kompatibla.

Portioner © 2005, 2009 Microsoft Corporation. Med ensamrätt.

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, publicerad 22 okt 2008 av Addison-Wesley Professional som en del av Microsoft Windows Development Series.

Se även