Udostępnij za pośrednictwem


Przeciążenie składowych

Uwaga / Notatka

Ta treść jest przedrukowana za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2. wydanie. Wydanie to zostało opublikowane w 2008 roku, a książka została w pełni zmieniona w trzecim wydaniu. Niektóre informacje na tej stronie mogą być nieaktualne.

Przeciążenie składowe oznacza utworzenie co najmniej dwóch elementów tych samych typów, które różnią się tylko liczbą lub typem parametrów, ale mają taką samą nazwę. Na przykład w poniższym przykładzie metoda WriteLine jest przeciążona.

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

Ponieważ tylko metody, konstruktory i właściwości indeksowane mogą mieć parametry, tylko ci członkowie mogą być przeciążeni.

Przeciążenie jest jedną z najważniejszych technik poprawy użyteczności, produktywności i czytelności bibliotek wielokrotnego użytku. Przeciążenie liczby parametrów umożliwia zapewnienie prostszych wersji konstruktorów i metod. Przeciążenie typu parametru pozwala używać tej samej nazwy dla członków wykonujących identyczne operacje na wybranym zestawie różnych typów.

✔️ Pamiętaj, aby używać opisowych nazw parametrów, które wskazują domyślne wartości stosowane przez krótsze przeciążenia.

❌ Unikaj losowych zmian nazw parametrów w przeciążeniach. Jeśli parametr w jednym przeciążeniu reprezentuje te same dane wejściowe co parametr w innym przeciążeniu, parametry powinny mieć taką samą nazwę.

❌ UNIKAJ niespójności w kolejności parametrów w przeciążonych członkach. Parametry o tej samej nazwie powinny być wyświetlane w tej samej pozycji we wszystkich przeciążeniach.

✔️ Wykonaj tylko najdłuższe przeciążenie wirtualne (jeśli wymagana jest rozszerzalność). Krótsze przeciążenia powinny po prostu wywoływać do dłuższego przeciążenia.

❌ NIE NALEŻY używać ref ani out modyfikatorów do przeciążenia elementów członkowskich.

Niektóre języki nie mogą rozpoznawać wywołań takich przeciążeń. Ponadto takie przeciążenia zwykle mają zupełnie inną semantykę i prawdopodobnie nie powinny być przeciążeniami, ale zamiast tego dwie oddzielne metody.

❌ NIE MAJĄ przeciążeń z parametrami w tej samej pozycji i podobnych typach, ale z różnymi semantykami.

✔️ Zezwalaj na null przekazywanie dla opcjonalnych argumentów.

✔️ Użyj przeciążania członków zamiast definiowania członków z domyślnymi argumentami.

Argumenty domyślne nie są zgodne ze specyfikacją CLS.

© Części 2005, 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

Przedrukowane za zgodą Pearson Education, Inc. z Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition przez Krzysztofa Cwalinę i Brada Abramsa, opublikowane 22 października 2008 przez Addison-Wesley Professional w ramach serii Microsoft Windows Development.

Zobacz także