Programovanie

Ako pracovať s metódami rozšírenia v C #

Programovací jazyk C # poskytuje podporu pre metódy rozšírenia z C # 3.0. Metóda rozšírenia je metóda, ktorá sa používa na rozšírenie funkčnosti existujúcich typov pridaním metód bez potreby vytvárania nových odvodených typov. Na to, aby ste mohli pracovať s metódami rozšírenia, nemusíte vytvárať podtriedy existujúcich tried alebo prekompilovať alebo upravovať svoje existujúce triedy. Metódy rozšírenia zlepšujú čitateľnosť vášho kódu a zároveň vám umožňujú rozšíriť funkčnosť existujúcich typov.

Bežné metódy rozšírenia v .Net zahŕňajú štandardné operátory dotazu LINQ, ktoré pridávajú ďalšie možnosti dotazu do System.Collections.IEnumerable a System.Collections.Generic.IEnumerable typy. Upozorňujeme, že môžete použiť metódy rozšírenia na rozšírenie triedy alebo rozhrania, ale nemôžete prepísať ich metódy. MSDN uvádza: „Metódy rozšírenia umožňujú„ pridávať “metódy k existujúcim typom bez vytvárania nového odvodeného typu, prekompilovania alebo inej úpravy pôvodného typu. Metódy rozšírenia sú špeciálnym druhom statickej metódy, ale volajú sa, akoby boli inštančné metódy na rozšírenom type. “

Metóda rozšírenia je v podstate špeciálny typ statickej metódy a umožňuje vám pridať funkčnosť k existujúcemu typu, aj keď nemáte prístup k zdrojovému kódu daného typu. Metóda rozšírenia je rovnako ako iná statická metóda, ale ako prvý parameter má referenciu „this“. Do ľubovoľného typu môžete pridať toľko metód rozšírenia, koľko chcete. Najdôležitejšie je, že aj do typu hodnoty môžete pridať metódy rozšírenia.

Pri práci s metódami rozšírenia nezabudnite na tieto body:

  • Metóda rozšírenia musí byť statická metóda
  • Metóda rozšírenia musí byť vo vnútri statickej triedy - trieda môže mať akýkoľvek názov
  • Parameter v metóde rozšírenia by mal mať vždy kľúčové slovo „toto“ predchádzajúce typu, na ktorý je potrebné metódu zavolať

Upozorňujeme, že ak definujete metódu rozšírenia pre typ, ktorý má rovnaký podpis ako ktorákoľvek iná metóda typu, ktorý rozširujete, metóda rozšírenia sa nikdy nebude volať.

Programovacie metódy rozšírenia v C #

V tejto časti preskúmame, ako programovať metódy rozšírenia pomocou C #. Nasledujúci zoznam kódov ilustruje, ako vyzerá metóda rozšírenia.

verejná statická trieda StringExtensions

    {

public static bool IsNumeric (tento reťazec str)

        {

dvojitý výstup;

návrat double.TryParse (str, výstup);

        }

    }

Všimnite si prvý parameter metódy rozšírenia. Ako už bolo uvedené, akákoľvek metóda rozšírenia by mala byť statická a mala by mať kľúčové slovo „toto“ predchádzajúce parametru, na ktorý chcete metódu vyvolať. Keď zadáte kľúčové slovo „toto“ v zozname parametrov tak, ako bolo zobrazené vo vyššie uvedenom príklade, informujete kompilátor, že pre triedu reťazcov bola definovaná metóda rozšírenia.

Tu je príklad, ako môžete použiť metódu rozšírenia IsNumeric na inštancii reťazca.

static void Main (reťazec [] args)

        {

string str = "100";

if (str.IsNumeric ())

Console.WriteLine ("Objekt reťazca s názvom str obsahuje číselnú hodnotu.");

Console.Read ();

        }

Po vykonaní vyššie uvedeného programu sa v okne konzoly zobrazí správa („Objekt reťazca s názvom str obsahuje číselnú hodnotu.“).

Môžete použiť metódy rozšírenia na vloženie novej funkčnosti pomocou metód do typu bez potreby úpravy, odvodenia alebo prekompilovania pôvodného typu. Ako som už spomenul, metódy rozšírenia je možné použiť aj na typy hodnôt. Pozrime sa, ako sa to dá dosiahnuť na príklade.

Nasledujúca trieda s názvom IntegerExtensions obsahuje metódu rozšírenia s názvom IsEven, ktorá vracia true, ak je celé číslo, ktoré sa volá, párne, inak false.

verejná statická trieda IntegerExtensions

    {

public static bool IsEven (this int i)

        {

návrat ((i% 2) == 0);

        }

    }

A tu je príklad, ako môžete použiť metódu rozšírenia IsEven na celé číslo.

int n = 2;

if (n.IsEven ())

Console.WriteLine ("Hodnota celého čísla je párna.");

$config[zx-auto] not found$config[zx-overlay] not found