Question

J'ai développé des applications .NET pour 4 ans. Jusqu'à présent, je ne l'ai pas besoin de créer des conversions implicites pour les classes I Authored.
Pouvez-vous fournir des situations de la vie réelle quand on ne pouvait pas faire sans créer de conversions implicites?

Merci

Était-ce utile?

La solution

Les conversions implicites ne doivent être définies lorsque le type peut être converti en provenance ou à (de préférence à et de) un autre type avec pas de perte de données. Un autre critère est que les conversions implicites devraient être assez bon marché, parce que le développeur en utilisant votre classe ne sera probablement pas au courant du moment où les conversions implicites se produisent.

Un exemple: la conversion entre systèmes de coordonnées. Un vecteur de coordonnées polaires qui peuvent convertir en coordonnées cartésiennes, par exemple, peut être pratique. Cependant, en raison de rond point flottant au large, il serait encore préférable de laisser cela comme une conversion explicite afin que le programmeur doit cataloguée pour forcer la conversion.

La conversion implicite peut être justifiée si vous avez deux types de données qui stockent des données dans le même format, mais la seule distinction entre les types est sémantique - la façon dont ils sont utilisés ou ce qu'ils signifient. Un exemple réel: Conversion entre les types de données datetime qui ont le même (ou compatible) la représentation sous-jacente mais ne diffèrent que par date de début de EPOC. Vous trouverez ces anciens lors de la migration codebases à des cadres plus récents où les deux définir un type datetime mais la sémantique sont légèrement différentes. La conversion implicite ici (en supposant qu'il n'y ait pas de perte de données du tout) est probablement correct et une bonne idée.

Si vous avez un ensemble de types et que vous avez défini vos propres règles pour la façon dont les types peuvent être convertis entre eux, alors certaines de ces conversions peuvent être implicites et explicites certains en fonction de la « gravité » de la conversion. L'instance principale où j'ai utilisé une conversion implicite lors de l'implémentation d'une classe dans .NET était quand j'exécutait la sémantique Variant Win32 pour la bibliothèque d'exécution Delphi. Win32 et le langage Delphi spécifient un certain nombre de conversions sur Variant données qui peut être fait implicitement.

Que vous n'avez pas trouvé nécessaire de créer des conversions implicites est en fait une bonne chose. Tout simplement parce que vous pouvez ne signifie pas que vous devriez. Les conversions implicites existent dans .NET principalement pour permettre aux différents langages de programmation pour représenter leur propre sémantique d'une manière qui devrait être interopérable et compréhensible par d'autres langages .NET.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top