Les contraintes de type

Comme vu dans les accesseurs, l’interface IReportChange est utilisée pour accéder à la propriété HasChanged des éléments de la liste. Cela signifie que les éléments ajoutés doivent obligatoirement implémenter l’interface. Pour limiter les types qui pourront se substituer au paramètre générique T, des contraintes peuvent être appliquées.

Voici les contraintes existantes :

Contrainte

Description

where T : classe

Contrainte sur la classe de base du type.

where T : interface

Contrainte sur l’interface implémentée par le type.

where T : class

Le type doit être un type référence.

where T : struct

Le type doit être une structure.

where T : new()

Le type doit avoir un constructeur sans paramètre.

where U : T

Le type représenté par U doit être identique au type T.

Ajoutez une contrainte sur l’interface IReportChange sur la classe générique ReportChangeList :

public class ReportChangeList<T> : IReportChildrenChange where T : 
IReportChange 

Les contraintes sont appliquées sur tous les paramètres de type définis, que ce soit dans les méthodes ou dans la définition de type.

Les contraintes de type peuvent également être définies au niveau des méthodes :

public void MaMethode<T>() where T : class 
{ } 
Pour consulter la suite, découvrez le livre suivant :
couv_EI9C19VIS.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
La création de types génériques
Suivant
Les interfaces génériques