Sobes.tech
Junior

V čem spočívá podstata metod rozšíření?

sobes.tech AI

Odpověď od AI

Rozšiřující metody (extension methods) umožňují přidávat nové metody ke stávajícím typům bez změny jejich zdrojového kódu nebo vytvoření nového odvozeného typu.

Podstata je následující:

  • Jsou deklarovány jako statické metody ve statické třídě.
  • První parametr rozšiřující metody má klíčové slovo this před svým typem. Tento parametr označuje typ, který je rozšiřován.
  • Jsou volány, jako by byly instance metod rozšiřovaného typu.

Příklad:

// Statická třída pro rozšiřující metody
public static class StringExtensions
{
    // Rozšiřující metoda pro 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žití rozšiřující metody
string myString = "This is a long string.";
string truncatedString = myString.Truncate(10); // Voláno jako metoda instance

// Ekvivalent volání přímo statické metody
string truncatedStringDirect = StringExtensions.Truncate(myString, 10);

Výhody:

  • Zlepšují čitelnost kódu, umožňují používat "tečkovou" syntax na objektech.
  • Umožňují přidávat funkčnost k "sealed" (uzavřeným) třídám nebo typům z knihoven třetích stran bez změny jejich zdrojového kódu.
  • Usnadňují psaní LINQ dotazů, protože mnoho LINQ metod je implementováno jako rozšiřující metody.