Come spesso si fa a creare le conversioni implicite per le classi?
-
24-09-2019 - |
Domanda
Sono stato in via di sviluppo .NET applications per 4 anni.Finora, non ho bisogno di creare qualsiasi conversioni implicite per le classi che ne sono l'autore.
Potrebbe fornire situazioni di vita reale, quando si poteva fare senza creare conversioni implicite?
Grazie
Soluzione
Le conversioni implicite dovrebbe essere definita solo quando il tipo può essere convertito o da (preferibilmente e da) un altro tipo di nessuna perdita di dati.Un altro criterio è che le conversioni implicite dovrebbe essere abbastanza economico, perché lo sviluppatore che utilizza la classe probabilmente non essere a conoscenza di quando le conversioni implicite stanno accadendo.
Un esempio:la conversione tra sistemi di coordinate.Una delle coordinate polari vettore che può convertire in coordinate cartesiane, per esempio, potrebbe essere conveniente.Tuttavia, a causa floating point completano sarebbe comunque meglio lasciare questo come una conversione esplicita in modo che il programmatore ha a typecast per forzare la conversione.
La conversione implicita può essere giustificata se si dispone di due tipi di dati che memorizza i dati nello stesso formato, ma l'unica distinzione tra i due tipi di semantica come vengono utilizzati o che cosa significano.Esempio reale:La conversione tra i tipi di dati datetime che hanno lo stesso (o compatibile) rappresentazione sottostante ma che differiscono solo per l'epoc data di inizio.Troverete questi quando si esegue la migrazione anziani e le basi di codice a quadri più recenti in cui sia definire un tipo datetime, ma il significato è leggermente diverso.La conversione implicita qui (supponendo che non vi è alcuna perdita di dati) è probabilmente ok e una buona idea.
Se si dispone di un set di tipi e hanno definito le regole per i tipi possono essere convertiti tra l'altro, poi alcune di queste conversioni possono essere implicite, e alcune esplicite a seconda della "gravità" della conversione.L'istanza primaria di cui ho usato la conversione implicita quando si implementa una classe .NET è stato quando mi è stato attuazione Win32 Variante semantica per la Delphi libreria di runtime.Win32 e il linguaggio Delphi specificare un numero di conversioni di dati Variant che può essere fatto implicity.
Che non hai trovato la necessità di creare le conversioni implicite è in realtà una buona cosa.Solo perché è possibile non significa che si dovrebbe.Le conversioni implicite esistente .NET principalmente per consentire diversi linguaggi di programmazione per rappresentare la propria semantica in un modo che dovrebbe essere interoperabili e comprensibili da parte di altri .NET lingue.