2009-09-02 15 views
6

Quando è sicuro utilizzare il cast implicito?Quando dovrei usare il casting implicito?

Uso della custodia: Sto lavorando con una serie di oggetti COM che devono essere gestiti appositamente (Marshal.ReleaseComObject). È corretto creare una classe wrapper che converta implicitamente di nuovo nell'oggetto com effettivo?

Quali sono le situazioni in cui I non deve utilizzare per utilizzare la trasmissione implicita?

+4

Giusto per essere pignoli: non esiste una cosa come "casting implicito". Puoi usare un * cast operator * per dire al compilatore di eseguire una * conversione esplicita *, oppure puoi omettere l'operatore cast ed eseguire una * conversione implicita *, ma non c'è * cast implicito *. * Cast * è la cosa che appare nel codice sorgente; se non appare lì allora non c'è * cast *. –

risposta

1
  1. È necessario eseguire questo cast molto.
  2. Non c'è un modo per evitare il cast.
  3. Non è meglio rappresentato come una funzione di conversione/proiezione. Per dirla in un altro modo, deve essere "lo stesso oggetto" dopo il cast.
  4. È possibile effettuare il round-trip sull'oggetto originale. (Non implicitamente, però.)
  5. Non sconvolgerà sovraccarichi di funzionalità futuri esistenti o possibili.

Io di solito riassumere questi punti come "mai", ma per ironia della sorte il vostro caso d'uso suona in realtà come un frequentatore ...

3

È necessario utilizzare la trasmissione implicita quando (e solo quando) si è certi che:
1. Durante la conversione non vengono perse (o possono essere perse) informazioni (dati).
2. Nessuna eccezione può essere lanciata.
3. Non si può verificare un errore silenzioso (si riceveranno dati degenerati).

Problemi correlati