Sobes.tech
Junior

V čom spočíva podstata metód rozšírenia?

sobes.tech AI

Odpoveď od AI

Rozširujúce metódy (extension methods) umožňujú pridávať nové metódy k existujúcim typom bez zmeny ich zdrojového kódu alebo vytvárania nového odvodeného typu.

Podstata je nasledovná:

  • Sú deklarované ako statické metódy v statickej triede.
  • Prvý parameter rozširujúcej metódy má kľúčové slovo this pred svojím typom. Tento parameter označuje typ, ktorý sa rozširuje.
  • Sú volané ako inštančné metódy rozširovaného typu.

Príklad:

// Statická trieda pre rozširujúce metódy
public static class StringExtensions
{
    // Rozširujúca metóda pre typ string
    public static string Truncate(this string input, int maxLength)
    {
        if (string.IsNullOrEmpty(input))
        {
            return input;
        }
        return input.Length <= maxLength ? input : input.Substring(0, maxLength) + "...";
    }
}

// Použitie rozširujúcej metódy
string myString = "This is a long string.";
string truncatedString = myString.Truncate(10); // Volá sa ako inštančná metóda

// Ekvivalent priameho volania statickej metódy
string truncatedStringDirect = StringExtensions.Truncate(myString, 10);

Výhody:

  • Zlepšujú čitateľnosť kódu, umožňujúc použitie syntaxe "bodky" na objektoch.
  • Umožňujú pridanie funkčnosti k "sealed" (zatvoreným) triedam alebo typom z knižníc tretích strán bez zmeny ich zdrojového kódu.
  • Uľahčujú písanie LINQ dopytov, pretože mnoho LINQ metód je implementovaných ako rozširujúce metódy.