where T class (type référence)
Contexte : La contrainte where T : class exige que le paramètre de type soit un type référence (classe, interface, délégué, tableau). Elle autorise null. Elle est souvent utilisée pour les conteneurs qui gèrent des objets partagés ou nécessitent des références.
Exemple d’utilisation
Section intitulée « Exemple d’utilisation »using System;using System.Collections.Generic;
public class Entrepot<T> where T : class{ private readonly List<T> _items = new List<T>();
public void Ajouter(T item) { if (item == null) throw new ArgumentNullException(nameof(item)); _items.Add(item); }
public T Obtenir(int index) => _items[index];}
class Program{ static void Main() { var entrepotChaines = new Entrepot<string>(); entrepotChaines.Ajouter("Bonjour"); Console.WriteLine(entrepotChaines.Obtenir(0));
// Ceci ne compile pas : int est un struct // var entrepotInt = new Entrepot<int>(); }}Sortie console
Section intitulée « Sortie console »dotnet runBonjourRemarques importantes
Section intitulée « Remarques importantes »classinclut les interfaces, les délégués et les tableaux.- Permet de vérifier
nullet d’utiliser l’opérateuras.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »List<T> – N’a pas de contrainte class, mais beaucoup de collections personnalisées l’utilisent pour garantir que les éléments sont des objets.
Voir documentation .NET sur la contrainte class.