Métodos de Extensión en C#
⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.
En C#, al igual que en Kotlin, puedes definir métodos de extensión para añadir nuevas funcionalidades a clases existentes sin modificar su código original. Esto es útil para extender el comportamiento de clases en bibliotecas o APIs que no puedes cambiar directamente. La sintaxis y la idea son similares a los métodos de extensión en Kotlin, pero hay algunas diferencias clave en la implementación y el uso.
Sintaxis de Métodos de Extensión en C#
En C#, un método de extensión es una función estática que se define en una clase estática, pero que opera sobre una instancia de otra clase. La palabra clave this
se utiliza en el primer parámetro del método para indicar que es un método de extensión de la clase a la que está extendiendo.
Ejemplo:
public static class StringExtensions
{
public static bool IsPalindrome(this string s) =>
s.SequenceEqual(s.Reverse());
}
string word = "radar";
Console.WriteLine(word.IsPalindrome()); // Output: True
Extender Clases Genéricas en C#
Al igual que en Kotlin, en C# es posible extender clases genéricas utilizando métodos de extensión. La idea es similar: puedes añadir nuevos métodos a clases genéricas sin modificar su código original.
Ejemplo de Extensión de una Clase Genérica
Vamos a crear un método de extensión para una clase genérica List<T>
que devuelve el segundo elemento de la lista, similar al ejemplo de Kotlin.
public static class ListExtensions
{
public static T Second<T>(this List<T> list)
{
if (list.Count < 2)
{
throw new InvalidOperationException("La lista tiene menos de dos elementos");
}
return list[1];
}
}
var numbers = new List<int> { 10, 20, 30 };
Console.WriteLine(numbers.Second()); // Output: 20