TOC

This article has been localized into Czech by the community.

Třídy:

Přetěžování metod

Mnoho programovacích jazyků podporuje techniku nazývanou výchozí/volitelné parametry. Umožňují programátorovi udělat jeden nebo několik parametrů volitelnými tím, že jim přiřadí výchozí hodnotu. Je to obzvláště praktické při přidávání funkcionality k existujícímu kódu.

Například můžete chtít přidat funkčnost k existující funkci, což vyžaduje přidání jednoho nebo více parametrů. Tím byste ale porušili existující kód volající tuto funkci, protože by nyní nepředával požadovaný počet parametrů. Abyste toto obešli, můžete nově přidané parametry definovat jako volitelné a dát jim výchozí hodnotu, která odpovídá tomu, jak by kód fungoval před přidáním parametrů.

Výchozí parametry byly zavedeny ve verzi C# 4.0, ale až do té doby používali programátoři C# jinou techniku, která v zásadě dělá totéž, nazývanou přetěžování metod (method overloading). Umožňuje programátorovi definovat několik metod se stejným názvem, pokud přijímají různé sady parametrů. Když používáte třídy .NET frameworku, brzy si uvědomíte, že přetěžování metod je používáno všude. Dobrým příkladem toho je metoda Substring() třídy String. Má dodatečné přetížení, jako toto:

string Substring (int startIndex)
string Substring (int startIndex, int length)

Můžete ji volat buď s jedním, nebo s dvěma parametry. Pokud ji zavoláte pouze s jedním parametrem, parametr délky se považuje za zbytek řetězce, což nám ušetří čas, kdykoli jednoduše chceme získat poslední část řetězce.

Takže tím, že definujeme několik verzí téže funkce, jak se vyhneme tomu, abychom měli stejný kód na několika místech? Je to vlastně docela jednoduché: Necháme jednoduché verze metody, aby složitá verze vykonala veškerou práci. Zvažte následující příklad:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return number1 + number2 + number3;
    }
}

Definujeme metodu Plus ve dvou různých verzích. První přijímá dva parametry pro sčítání dvou čísel, zatímco druhá verze přijímá tři čísla. Skutečná práce je vykonána ve verzi, která přijímá tři čísla - pokud chceme přidat pouze dvě, voláme verzi se třemi parametry a jako třetí parametr jednoduše použijeme 0, který působí jako výchozí hodnota. Vím, vím, je to hloupý příklad, jak naznačuje název třídy, ale měl by vám dát představu o tom, jak to všechno funguje.

Teď, máte pocit, že děláte pokročilou matematiku tím, že přidáte celkem čtyři čísla (jen si děláme legraci), je velmi jednoduché přidat nové přetížení:

class SillyMath
{
    public static int Plus(int number1, int number2)
    {
        return Plus(number1, number2, 0);
    }

    public static int Plus(int number1, int number2, int number3)
    {
        return Plus(number1, number2, number3, 0);
    }

    public static int Plus(int number1, int number2, int number3, int number4)
    {
        return number1 + number2 + number3 + number4;
    }
}

Skvělé na tom je, že všechna vaše stávající volání metody Plus budou pokračovat v práci, jako by se nic nezměnilo. Čím více budete používat C#, tím více si budete vážit přetěžování metod.


This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!