0Pricing
C# Academy · Lección

Métodos/tipos genéricos y restricciones

Escriba métodos y tipos genéricos; añada restricciones con where T : … (class, struct, new(), interfaz/base).

Métodos/tipos genéricos y restricciones es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 1 de 3. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 3 lecciones en total.

Descripción general de los genéricos

Objetivo: Reutilice código de forma segura mediante genéricos.

  • Métodos y tipos genéricos
  • Restricciones: class, struct, new(), interfaz o clase base
  • Mantenga los ejemplos pequeños y claros

Método genérico

Un método genérico tiene una lista de parámetros de tipo, por ejemplo, Identity<T>, y funciona con muchos tipos.

using System;

// Generic method works for any T
public class Program
{
  static T Identity<T>(T value)
  {
    // just returns what it got
    return value;
  }

  public static void Main(string[] args)
  {
    int a = Identity<int>(5);
    string b = Identity<string>("hi");
    Console.WriteLine(a + " & " + b);
  }
}

Tipo genérico

Un tipo genérico (como Box<T>) se compila una vez y se usa con muchos tipos concretos.

using System;

// Simple generic type to hold a value
public sealed class Box<T>
{
  private T _value;
  public Box(T value) { _value = value; }
  public T Get() { return _value; }
  public void Set(T value) { _value = value; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Box<int> bi = new Box<int>(10);
    Box<string> bs = new Box<string>("ok");
    Console.WriteLine(bi.Get() + " | " + bs.Get());
  }
}

Restricción new()

Añada where T : new() si necesita llamar a new T() dentro del código genérico.

using System;

// Factory that can create T with a parameterless ctor
public static class Factory
{
  public static T Create<T>() where T : new()
  {
    return new T(); // allowed thanks to new() constraint
  }
}

public sealed class Person
{
  public string Name;
  public Person() { Name = "Anon"; }
}

public class Program
{
  public static void Main(string[] args)
  {
    Person p = Factory.Create<Person>();
    Console.WriteLine(p.Name);
  }
}

Restricción de interfaz

Restrinja T a una interface o clase base para poder llamar a sus miembros (por ejemplo, IComparable<T>).

using System;

// Min for two values that can be compared
public static class Utils
{
  public static T Min<T>(T a, T b) where T : IComparable<T>
  {
    return a.CompareTo(b) <= 0 ? a : b;
  }
}

public class Program
{
  public static void Main(string[] args)
  {
    Console.WriteLine(Utils.Min(5, 3));          // 3
    Console.WriteLine(Utils.Min("b", "a"));      // a
  }
}

Restricciones de class/struct y consejos

Otras restricciones:

  • where T : class → solo tipos de referencia
  • where T : struct → tipos de valor que no admiten null
  • Combine restricciones: where T : class, IDisposable, new()
  • Mantenga las API mínimas; prefiera las restricciones de interfaz por su flexibilidad.

Significado de la restricción new()

Comprobación rápida: ¿Qué restricción permite crear una nueva instancia de new T() dentro del código genérico?

Resumen

Resumen: Cree métodos/tipos genéricos y añada restricciones para usar los miembros necesarios: interfaz o clase base para el comportamiento, class/struct para el tipo y new() para llamar a un constructor sin parámetros.

Preguntas frecuentes

¿La lección «Métodos/tipos genéricos y restricciones» es gratis?

Sí — el texto completo de «Métodos/tipos genéricos y restricciones» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 3 lecciones en total.

¿Qué aprenderé en «Métodos/tipos genéricos y restricciones»?

Escriba métodos y tipos genéricos; añada restricciones con where T : … (class, struct, new(), interfaz/base). Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 3.

¿Cuánto tiempo toma la lección «Métodos/tipos genéricos y restricciones»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Métodos/tipos genéricos y restricciones
  2. Varianza (in/out) con interfaces y delegados
  3. Tipos de referencia anulables (nociones) y anotaciones (patrones de C# 6)
← Volver a C# Academy