0Pricing
C# Academy · Leçon

Méthodes et types génériques ; contraintes

Écrivez des méthodes et des types génériques ; ajoutez des contraintes avec where T : … (class, struct, new(), interface/base).

Méthodes et types génériques ; contraintes est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 3. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 3 leçons au total.

Vue d’ensemble des génériques

Objectif : réutiliser le code en toute sécurité avec les génériques.

  • Méthodes et types génériques
  • Contraintes : class, struct, new(), interface ou classe de base
  • Garder des exemples courts et clairs

Méthode générique

Une méthode générique possède une liste de paramètres de type, par exemple Identity<T>, et fonctionne avec de nombreux types.

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);
  }
}

Type générique

Un type générique, comme Box<T>, est compilé une seule fois et utilisé avec de nombreux types concrets.

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());
  }
}

Contrainte new()

Ajoutez where T : new() si vous devez appeler new T() dans du code générique.

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);
  }
}

Contrainte d’interface

Contraignez T à une interface ou à une classe de base afin de pouvoir appeler ses membres, par exemple 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
  }
}

Contraintes de classe/structure et conseils

Autres contraintes :

  • where T : class → types référence uniquement
  • where T : struct → types valeur non nullables
  • Combinez les contraintes : where T : class, IDisposable, new()
  • Gardez des API minimales ; préférez les contraintes d’interface pour plus de flexibilité.

Signification de la contrainte new()

Vérification rapide : quelle contrainte vous permet de créer un new T() dans du code générique ?

Récapitulatif

Récapitulatif : créez des méthodes et types génériques, puis ajoutez des contraintes pour utiliser les membres requis : interface ou classe de base pour le comportement, class/struct pour la catégorie et new() pour appeler un constructeur sans paramètre.

Questions Fréquemment Posées

La leçon « Méthodes et types génériques ; contraintes » est-elle gratuite ?

Oui — le texte complet de « Méthodes et types génériques ; contraintes » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 3 leçons au total.

Qu'est-ce que j'apprendrai dans « Méthodes et types génériques ; contraintes » ?

Écrivez des méthodes et des types génériques ; ajoutez des contraintes avec where T : … (class, struct, new(), interface/base). Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 3.

Combien de temps prend la leçon « Méthodes et types génériques ; contraintes » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Méthodes et types génériques ; contraintes
  2. Variance (in/out) avec les interfaces et les délégués
  3. Types de références nullables (sensibilisation) et annotations (modèles C# 6)
← Retour à C# Academy