Partager via


Opérateurs de conversion

Les opérateurs de conversion convertissent un objet d'un type en un autre type. Ils peuvent être implicites ou explicites. Avec les opérateurs de conversion implicite, il n'est pas nécessaire de spécifier un cast de type dans le code source pour exécuter la conversion. En revanche, les opérateurs de conversion explicite exigent la présence d'un cast de type dans le code source pour exécuter la conversion.

La signature suivante illustre l'opérateur de conversion explicite de la classe Point pour convertir Point et Size.

[Visual Basic]

Public Shared Function op_Explicit( _
ByVal p As Point _
) As Size

[C#]

public static Size op_Explicit(
Point p
);

Ne fournissez pas d'opérateur de conversion si une telle conversion n'est pas clairement attendue par les utilisateurs finaux.

Dans l'idéal, il doit exister des données de recherche client pour prendre en charge la définition d'un opérateur de conversion. Il est également possible de présenter la prise en charge de la définition de l'opérateur sous la forme d'exemples dans lesquels un ou plusieurs types similaires nécessitent une telle conversion.

Ne définissez pas d'opérateurs de conversion en dehors du domaine d'un type.

Par exemple, Int32, Double et Decimal sont tous des types numériques, à la différence de DateTime. La conversion d'un type Double en type DateTime ne doit pas être implémentée en tant qu'opérateur de conversion. Utilisez un constructeur pour convertir un type en un autre type qui n'appartient pas au même domaine.

Ne fournissez pas d'opérateur de conversion implicite si la conversion est susceptible d'entraîner des pertes de données.

Par exemple, évitez la conversion implicite de Double en Single dans la mesure où Double offre une précision supérieure à celle de Single. Il est possible de fournir un opérateur de conversion explicite pour les conversions avec perte de données.

Ne levez pas d'exceptions à partir de casts implicites.

Les casts implicites sont appelés par le système ; l'utilisateur n'est pas toujours conscient de l'exécution d'une conversion et éprouvera des difficultés à déboguer le code.

Levez une exception System.InvalidCastException si un appel à un opérateur cast donne lieu à une conversion avec perte de données et que le contrat de l'opérateur n'autorise pas de telles conversions.

Portions Copyright 2005 Microsoft Corporation. Tous droits réservés.

Portions Copyright Addison-Wesley Corporation. Tous droits réservés.

Pour plus d'informations sur les règles de conception, consultez « règles de conception d'infrastructure : Conventions idiomes et modèles carnet de bibliothèques réutilisables framework » Krzysztof Cwalina et Brad Abrams, publiés par Addison-Wesley, 2005.

Voir aussi

Autres ressources

Instructions de conception des membres

Instructions de conception pour le développement de bibliothèques de classes