7. Předání parametru

7.4. Metoda orientovaná na výraz

Těla některých metod mohou být velice jednoduchá, mohou např. provádět jeden úkol, vracet výsledky výpočtu, aniž by vyžadovaly jakoukoliv další logiku. C # podporuje zjednodušenou formu takových metod obsahující jeden výraz. Metoda orientovaná na výraz (anglicky „Expression-bodied Method“) může přijímat parametry a vracet hodnoty. Tento typ metod funguje stejně jako metody, které jsme dosud užívali, ale s tím rozdílem, že je užit operátor => který odkazuje na výraz, jenž je tělem metody a také chybí příkaz return používaný v předchozích metodách. Hodnota výrazu se používá jako návratová hodnota. Pokud metoda nevrací žádný výsledek, je typu void. Ve skutečnosti neexistuje žádný rozdíl mezi metodou orientovanou na výraz a deklarací běžné metody s tělem uzavřeným ve složených závorkách. Výhoda použití tohoto typu metody je pouze v jednoduchosti zápisu (nemusíme používat složené závorky, což usnadňuje čtení kódu). [8]

Ilustrativní příklad SectiHodnotyVyraz
Program SectiHodnotyVyraz
  • Popis: Příklad deklarace metody orientované na výraz se dvěma vstupními parametry a celočíselným výstupem
  • Zadání: Zkuste deklarovat metodu orientovanou na výraz nazvanou SectiHodnotyVyraz, která přijímá dva celočíselné parametry pojmenované x a y. Metoda navrátí součet obou parametrů. Hodnotu výstupu této metody uložte do lokální proměnné vysledek deklarované v metodě Main, kde také proběhne volání metody. Hodnoty parametrů: x = 7 a y = 5
  • Řešení: Bude postupně probráno v následujícím textu

Následující příklad kódu ukazuje zjednodušenou verzi takové metody zapsané pomocí výrazu, která načítá dva celočíselné vstupní parametry a navrací jejich celočíselný součet – viz Kód 1.

/*Deklarace statické metody orientované na výraz s celočíselném výstupem 
  a se dvěma vstupními parametry*/
static int SectiHodnotyVyraz(int x, int y) => x + y;

Kód 1: Příklad deklarace metody SectiHodnotyVyraz orientované na výraz se dvěma vstupními parametry a celočíselným výstupem

Volání metody SectiHodnotyVyraz orientované na výraz (viz Kód 1) ve statické metodě Main, které předáme dva vstupní parametry ve formě literálu a jejíž celočíselný výstup uložíme do proměnné výsledek, bychom provedli následujícím způsobem – viz Kód 2.

static void Main(string[] args)
{        
    //Deklarace lokální celočíselné proměnné
    int vysledek;
    //Zavolání metody orientované na výraz se 2 vstupními parametry a jedním celočíselným výstupem
    vysledek = SectiHodnotyVyraz(7, 5);
    //Čekání na stisk klávesy -> ukončení programu
    Console.ReadKey();
}

Kód 2: Příklad zavolání metody SectiHodnotyVyraz orientované na výraz se dvěma vstupními parametry (použití literálů) a s návratem výsledku

Ilustrativní příklad ZobrazHodnotyVyraz
Program ZobrazHodnotyVyraz
  • Popis: Příklad deklarace metody orientované na výraz bez návratu výsledku s jedním vstupním parametrem
  • Zadání: Zkuste deklarovat metodu bez návratu (proceduru) orientovanou na výraz nazvanou ZobrazHodnotyVyraz, která přijímá celočíselný parametr pojmenovaný x. Metoda vypíše hodnotu tohoto parametru ve svém těle. V metodě Main zavolejte předchozí deklarovanou metodu SectiHodnotyVyraz (navrací součet obou parametrů – viz Ilustrativní příklad SectiHodnotyVyraz) s hodnotami parametrů: x = 7 a y = 5. Hodnotu výstupu této metody uložte do lokální proměnné vysledek. V metodě Main zavolejte ZobrazHodnotyVyraz a předejte jí hodnotu získaného výsledku
  • Řešení: Bude postupně probráno v následujícím textu

Následující kód zobrazuje metodu orientovanou na výraz, která nenavrací žádný výsledek (datový typ návratu je tedy void). Tato metoda přijímá jeden vstupní parametr a pouze vypisuje hodnotu tohoto parametru – viz Kód 3.

//Deklarace statické metody bez výstupu orientované na výraz s 1 vstupním parametrem
static void ZobrazHodnotyVyraz(int x) => Console.WriteLine("Hodnota x: {0}", x);

Kód 3: Příklad deklarace metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku s jedním vstupním parametrem

Ve statické metodě Main nyní zavolejme obě předchozí deklarované metody SectiHodnotyVyraz a ZobrazHodnotyVyraz – viz Kód 4.

static void Main(string[] args)
{        
    //Deklarace lokální celočíselné proměnné
    int vysledek;
    //Zavolání metody orientované na výraz se 2 vstupními parametry a jedním celočíselným výstupem
    vysledek = SectiHodnotyVyraz(7, 5);
    //Zavolání metody se vstupy ale bez výstupu
    ZobrazHodnotyVyraz(vysledek);
    //Čekání na stisk klávesy -> ukončení programu
    Console.ReadKey();
}

Kód 4: Příklad zavolání metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku s jedním vstupním parametrem

Na základě výpisu v konzole vidíme, že vypsaná hodnota v metodě Main, odpovídá hodnotě součtu obou parametrů - viz Výstup programu - Kód 4.

Hodnota x: 12

Výstup programu - Kód 4: Ukázka výsledku metody ZobrazHodnotyVyraz orientované na výraz bez návratu výsledku