Interfaces y Generics en C#

ℹ️ ¿Qué son las Interfaces en C#?

Las interfaces en C# son un conjunto de métodos, propiedades y eventos que un tipo de datos debe implementar. Las interfaces se utilizan para definir un contrato que debe ser cumplido por cualquier tipo de datos que la implemente.

📝 Ventajas de las Interfaces en C#

  • Permiten la herencia múltiple: un tipo de datos puede implementar múltiples interfaces.
  • Permiten la polimorfismo: un tipo de datos puede ser tratado como cualquier otro tipo de datos que implemente la misma interfaz.
  • Mejoran la reutilización del código: al definir un contrato, se puede reutilizar el código en diferentes partes del programa.
Intefaces en C#
Intefaces en C#

🖥️ Código fuente (ejemplo)

Interface

public interface IDamageable
{
    float Health { get; set; }
    void TakeDamage(float amount);
}

Uso Interface

public class Enemy : IDamageable
{
    public float Health { get; set; } = 100f;

    public void TakeDamage(float amount)
    {
        Health -= amount;
        // Lógica específica del enemigo (parpadear en rojo, reproducir sonido, etc.)
    }
}

public class DestructibleCrate : IDamageable
{
    public float Health { get; set; } = 25f;

    public void TakeDamage(float amount)
    {
        Health -= amount;
        // Lógica específica de la caja (romperse en trozos)
    }
}

ℹ️ ¿Qué son los Generics en C#?

Los genéricos en C# son una forma de reutilizar el código al definir un tipo de datos que puede ser reemplazado por cualquier otro tipo de datos.

📝 Ventajas de las Interfaces en C#

  • Permiten la reutilización del código: al definir un tipo de datos que puede ser reemplazado, se puede reutilizar el código en diferentes partes del programa.
  • Mejoran la seguridad del código: al definir un tipo de datos que puede ser reemplazado, se puede evitar la utilización de tipos de datos no seguros.
  • Mejoran la performance del código: al definir un tipo de datos que puede ser reemplazado, se puede evitar la creación de tipos de datos no necesarios.
Generics en C#. Generada con IA
Generics en C#. Generada con IA

🖥️ Código fuente (ejemplo)

public class InventorySlot<T>
{
    public T Item { get; set; }
    public int Quantity { get; set; }

    public InventorySlot(T item, int quantity)
    {
        Item = item;
        Quantity = quantity;
    }
}

// Uso práctico:
// Puedes crear un espacio para armas
InventorySlot<Weapon> weaponSlot = new InventorySlot<Weapon>(new Weapon("Espada de fuego"), 1);

// O un espacio para pociones de salud sin duplicar código
InventorySlot<Potion> potionSlot = new InventorySlot<Potion>(new Potion("Poción Roja"), 5);