Sobes.tech
Junior

Mis on laiendamise meetodite olemus?

sobes.tech AI

Vastus AI-lt

Laiendamise meetodid (extension methods) võimaldavad lisada olemasolevatele tüüpidele uusi meetodeid ilma nende lähtekoodi muutmata või uue päriliku tüübi loomata.

Põhimõte on järgmine:

  • Nad on deklareeritud statiliste meetoditena statilises klassis.
  • Esimene laiendamise meetodi parameeter on märgitud võtmesõnaga this enne oma tüüpi. See parameeter näitab laiendatavat tüüpi.
  • Nad kutsutakse välja nagu oleksid nende laiendatava tüübi eksemplarimeetodid.

Näide:

// Statiline klass laiendamise meetodite jaoks
public static class StringExtensions
{
    // Laiendamise meetod string-tüüpi
    public static string Truncate(this string input, int maxLength)
    {
        if (string.IsNullOrEmpty(input))
        {
            return input;
        }
        return input.Length <= maxLength ? input : input.Substring(0, maxLength) + "...";
    }
}

// Laiendamise meetodi kasutamine
string myString = "This is a long string.";
string truncatedString = myString.Truncate(10); // Kutsutakse välja nagu eksemplarimeetod

// Võrdväärne otse statilise meetodi kutsumisega
string truncatedStringDirect = StringExtensions.Truncate(myString, 10);

Eelised:

  • Parandab koodi loetavust, võimaldades kasutada "punkt" süntaksit objektidel.
  • Võimaldab lisada funktsionaalsust "sealed" (suletud) klassidele või väliste raamatukogude tüüpidele, ilma nende lähtekoodi muutmata.
  • Lihtsustab LINQ päringute kirjutamist, kuna paljud LINQ meetodid on implementeeritud laiendamise meetoditena.