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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top