Partager via


Le type de la valeur facultative pour le paramètre optionnel <NomParamètre> n'est pas conforme CLS

Mise à jour : novembre 2007

Type of optional value for optional parameter <parametername> is not CLS-compliant

Une procédure est marquée comme <CLSCompliant(True)>, mais déclare un paramètre Optional (Visual Basic) avec une valeur par défaut d'un type non conforme.

Pour qu'une procédure soit conforme au Spécification CLS (Common Language Specification) (CLS), elle doit utiliser uniquement des types conformes CLS. Cela s'applique aux types des paramètres, au type de retour et aux types de toutes ses variables locales. Cela s'applique également aux valeurs par défaut des paramètres optionnels.

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

Lorsque 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 le traitement des avertissements en tant qu'erreurs, consultez Configuration d'avertissements en Visual Basic.

ID d'erreur : BC40042

Pour corriger cette erreur

  • Si le paramètre optionnel doit avoir une valeur par défaut de ce type particulier, supprimez CLSCompliantAttribute. La procédure ne peut pas être conforme CLS.

  • Si la procédure doit être conforme CLS, remplacez le type de cette valeur par défaut par le type conforme CLS le plus proche. Par exemple, vous pouvez utiliser Integer au lieu de UInteger 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 utilisez des objets Automation ou COM, n'oubliez pas que certains types ont des largeurs de données différentes de celles le .NET Framework. Par exemple, int correspond souvent à 16 bits dans d'autres environnements. Si vous acceptez un argument de 16 bits à un tel composant, déclarez-le comme type de données Short et non comme Integer dans votre code Visual Basic managé.

Voir aussi

Concepts

Écriture d'un code conforme CLS