Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Cette documentation est archivée et n’est pas conservée.

La copie de la valeur du paramètre 'ByRef' '<NomParamètre>' dans l'argument correspondant passe du type '<NomType1>' au type '<NomType2>'

Une procédure est appelée avec un argument qui s'étend au type de paramètre correspondant, et la conversion du paramètre à l'argument est restrictive.

Lorsque vous définissez une classe ou une structure, vous pouvez définir un ou plusieurs opérateurs de conversion pour convertir ce type de classe ou de structure en d'autres types. Vous pouvez également définir des opérateurs de conversion inverse pour convertir ces autres types en votre type de classe ou de structure. Lorsque vous utilisez votre type de classe ou de structure dans un appel de procédure, Visual Basic peut utiliser ces opérateurs de conversion pour convertir le type d'un argument en type de son paramètre correspondant.

Si vous passez l'argument ByRef (Visual Basic), Visual Basic copie parfois sa valeur dans une variable locale de la procédure au lieu de passer une référence. Dans ce cas, lors du retour de la procédure, Visual Basic doit copier la valeur de la variable locale dans l'argument du code appelant.

Si une valeur d'argument ByRef est copiée dans la procédure et que l'argument et le paramètre sont du même type, aucune conversion n'est nécessaire. Mais si les types sont différents, Visual Basic doit effectuer une conversion dans les deux sens. Si l'un des types est votre type de classe ou de structure, Visual Basic doit le convertir vers et à partir de l'autre type. Si l'une de ces conversions est étendue, la conversion inverse peut être restrictive.

ID d'erreur : BC32053

Pour corriger cette erreur

  • Si possible, utilisez un argument d'appel du même type que le paramètre de procédure. Ainsi, Visual Basic n'a pas besoin d'effectuer une conversion.

  • Si vous devez appeler la procédure avec un type d'argument autre que le type du paramètre, sans retourner une valeur dans l'argument d'appel, affectez au paramètre la valeur Byval (Visual Basic) au lieu de ByRef.

  • Si vous devez retourner une valeur dans l'argument d'appel, affectez à l'opérateur de conversion inverse la valeur Widening (Visual Basic), si possible.

Afficher: