Aller au contenu

Contraintes

Contexte : Les contraintes restreignent les types qui peuvent être utilisés comme arguments de type générique. Elles permettent d’accéder à des membres spécifiques (constructeurs, méthodes, propriétés) du paramètre de type. La clause where est utilisée pour déclarer des contraintes.

using System;
// Plusieurs contraintes illustrées dans une classe
public class ContrainteDemo<T> where T : class, new()
{
public T CreerInstance()
{
return new T(); // new() permet d'utiliser le constructeur par défaut
}
}
class Program
{
static void Main()
{
var demo = new ContrainteDemo<ContrainteDemo<object>>();
var instance = demo.CreerInstance();
Console.WriteLine(instance != null);
}
}
Fenêtre de terminal
dotnet run
True
  • Les contraintes sont optionnelles mais puissantes.
  • On peut appliquer des contraintes à la classe ou à la méthode.
  • Plusieurs contraintes sont séparées par des virgules.

Dictionary<TKey, TValue>TKey ne peut pas être null (contrainte implicite).
Voir documentation .NET sur les contraintes.