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.