Aller au contenu

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.

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>();
}
}
Fenêtre de terminal
dotnet run
Bonjour
  • class inclut les interfaces, les délégués et les tableaux.
  • Permet de vérifier null et d’utiliser l’opérateur as.

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.