Skip to content

FR CSharp Generics

Codex edited this page Oct 11, 2026 · 2 revisions

Українська · Русский · English · Deutsch · Français · Italiano · Español · 繁體中文 · 日本語 · 한국어

Génériques et restrictions de type

Manuel C# · Exemples UO

Un type ou une méthode générique reçoit des paramètres de type, par exemple T. Le compilateur vérifie les appels à ces types. Les contraintes where décrivent les propriétés nécessaires : type de base, interface, class, struct, notnull, unmanaged, ou constructeur accessible new().

Exemple simple (Example.cs)

Enregistrez cet exemple séparément dans Example.cs. Exécutez-le indépendamment des autres exemples de cette page.

Example.cs:

// PROJECT-EXAMPLE
T Echo<T>(T value) => value;
System.Console.WriteLine(Echo(7));
System.Console.WriteLine(Echo("ore"));

Résultat:

7
ore
T FirstOrFallback<T>(IReadOnlyList<T> values, T fallback)
{
    return values.Count > 0 ? values[0] : fallback;
}

int first = FirstOrFallback(new[] { 10, 20 }, 0);
UO.Print(first.ToString());
sealed class Store<T> where T : notnull
{
    private readonly HashSet<T> values = new();
    public bool Add(T value) => values.Add(value);
    public int Count => values.Count;
}

var store = new Store<string>();
store.Add("self");
UO.Print(store.Count.ToString());

in et out pour les interfaces génériques et les délégués expriment la contravariance et la covariance ; il s'agit d'une utilisation des mots différente de celle des paramètres de la méthode in/out. Ils spécifient des conversions valides de types de référence compatibles.

Documentation officielle : Tapez les génériques et les contraintes - Microsoft Learn.

Clone this wiki locally