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()
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
- Méthodes et types génériques ; contraintes
- Variance (in/out) avec les interfaces et les délégués
- Types de références nullables (sensibilisation) et annotations (modèles C# 6)