Partager via


BC40028 : Le type de paramètre ’<nom_paramètre>’ n’est pas conforme CLS

Une procédure est marquée comme <CLSCompliant(True)>, mais déclare un paramètre avec un type marqué comme <CLSCompliant(False)>, qui n’est pas marqué ou qui n’est pas qualifié, car il s’agit d’un type non conforme.

Pour qu’une procédure soit conforme à CLS (Indépendance du langage et composants indépendants du langage), elle doit utiliser uniquement des types conformes à CLS. Cette règle s’applique aux types des paramètres, au type de retour et aux types de toutes ses variables locales.

Les types de données Visual Basic suivants ne sont pas conformes CLS :

Quand vous appliquez l’attribut CLSCompliantAttribute à un élément de programmation, vous affectez au paramètre isCompliant de l’attribut la valeur True ou False pour indiquer la conformité ou la non-conformité. Il n’existe pas de valeur par défaut pour ce paramètre et vous devez fournir une valeur.

Si vous n’appliquez pas CLSCompliantAttribute à un élément, il est considéré comme étant non conforme.

Par défaut, ce message est un avertissement. Pour plus d’informations sur le masquage des avertissements ou leur traitement en tant qu’erreurs, consultez Configuring Warnings in Visual Basic.

ID d’erreur : BC40028

Pour corriger cette erreur

  • Si la procédure doit prendre un paramètre de ce type particulier, supprimez le CLSCompliantAttribute. La procédure ne peut pas être conforme à CLS.

  • Si la procédure doit être conforme à CLS, remplacez le type de ce paramètre par le type conforme à CLS le plus proche. Par exemple, vous pouvez utiliser UInteger au lieu de Integer si vous n’avez pas besoin de la plage de valeurs située au-dessus de 2 147 483 647. Si vous avez besoin de la plage étendue, vous pouvez remplacer UInteger par Long.

  • Si vous interfacez avec des objets Automation ou COM, n’oubliez pas que certains types ont des largeurs de données différentes de celles de .NET Framework. Par exemple, int correspond souvent à 16 bits dans d’autres environnements. Si vous passez un entier sur 16 bits à un tel composant, déclarez-le comme Short au lieu de Integer dans votre code Visual Basic managé.