Option Strict On non consente conversioni implicite da '<tipo1>' a '<tipo2>'

Aggiornamento: novembre 2007

Option Strict On disallows implicit conversions from '<type1>' to '<type2>'

Si è tentato di convertire un tipo in un altro che potrebbe non essere in grado di contenere il valore, ad esempio Long in Integer, mentre l'opzione di controllo del tipo (Istruzione Option Strict) è impostata su On.

È possibile che questo tipo di conversione, denominato conversione verso un tipo di dati più piccolo, abbia esito negativo in fase di esecuzione. Per questo motivo, Option Strict On non consente conversioni implicite verso un tipo di dati più piccolo.

ID errore: BC30512

Per correggere l'errore

  1. Determinare se esiste una conversione di qualche tipo da <type1> a <type2>. Se entrambi sono tipi elementari di Visual Basic oppure istanze di classi, è possibile in genere effettuare questa operazione consultando la tabella in Conversioni di ampliamento e restrizione.

  2. Se esiste solo una conversione verso un tipo di dati più piccolo da <type1> a <type2>, è necessario utilizzare il cast esplicito. Se la conversione ha esito negativo, le parole chiave Funzione CType e DirectCast generano un'eccezione in fase di esecuzione . Se la conversione ha esito negativo, la parola chiave TryCast si applica solo ai tipi di riferimento e restituisce Nothing (Visual Basic).

  3. Se esiste una conversione verso un tipo di dati più piccolo e il programma è in grado di tollerare un errore di run-time oppure se si ritiene che sia impossibile un errore di questo tipo, è possibile specificare Option Strict Off all'inizio del codice sorgente. Per evitare risultati imprevisti o la chiusura anticipata del programma, è comunque opportuno racchiudere la conversione in un blocco dell'Istruzione Try...Catch...Finally (Visual Basic).

  4. Se non esistono conversioni da <type1> a <type2>, è necessario rivalutare la logica del programma. È possibile scrivere codice che può assegnare a <type2> valori corrispondenti a quelli previsti di <type1>.

  5. Se non esistono conversioni da <type1> a <type2> e uno dei tipi è una classe o una struttura definita, è possibile definire un operatore di conversione da un tipo all'altro o viceversa. Per ulteriori informazioni, vedere Procedura: definire un operatore di conversione.

  6. Come regola generale, è opportuno evitare di utilizzare conversioni verso un tipo di dati più piccolo, a meno che non sia possibile intercettare gli errori in un blocco Catch e gestirli correttamente.

Vedere anche

Attività

Procedura: definire un operatore di conversione

Concetti

Conversioni di ampliamento e restrizione

Riferimenti

Istruzione Option Strict

Funzione CType

DirectCast

TryCast

Nothing (Visual Basic)

Istruzione Try...Catch...Finally (Visual Basic)