Sobes.tech
Junior

Care este esența metodelor de extindere?

sobes.tech AI

Răspuns de la AI

Metodele de extensie (extension methods) permit adăugarea de noi metode tipurilor existente fără a modifica codul sursă sau a crea un tip derivat nou.

Esenta este următoarea:

  • Sunt declarate ca metode statice într-o clasă statică.
  • Primul parametru al metodei de extensie are cuvântul cheie this înaintea tipului său. Acest parametru indică tipul care este extins.
  • Sunt apelate ca și cum ar fi metode de instanță ale tipului extins.

Exemplu:

// Clasă statică pentru metode de extensie
public static class StringExtensions
{
    // Metodă de extensie pentru tipul 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) + "...";
    }
}

// Utilizarea metodei de extensie
string myString = "This is a long string.";
string truncatedString = myString.Truncate(10); // Apelată ca metodă de instanță

// Echivalent cu apelul direct al metodei statice
string truncatedStringDirect = StringExtensions.Truncate(myString, 10);

Avantaje:

  • Îmbunătățesc lizibilitatea codului, permițând utilizarea sintaxei "punct" pe obiecte.
  • Permite adăugarea de funcționalitate la clase "sealed" sau tipuri din biblioteci externe fără a modifica codul sursă.
  • Facilitează scrierea de interogări LINQ, deoarece multe metode LINQ sunt implementate ca metode de extensie.