Share via


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

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

Questa conversione viene chiamata conversione verso un tipo di dati più piccoloe può non riuscire in fase di esecuzione. Per questo motivo, Option Strict On non consente le conversioni implicite verso un tipo di dati più piccolo.

ID errore: BC30512

Per correggere l'errore

  1. Determinare se esiste una conversione di qualsiasi tipo da <type1> a <type2>. Se entrambi sono tipi elementari di Visual Basic o sono entrambi istanze di classi, in genere è possibile determinare questo aspetto consultando la tabella in Conversioni che supportano un maggior numero di dati e conversioni che supportano un minor numero di dati.

  2. Se esiste solo una conversione verso un tipo di dati più piccolo da <type1> a <type2>, è consigliabile usare il cast esplicito. Le parole chiave della funzione CType e dell'operatore DirectCast generano un'eccezione in fase di esecuzione se la conversione non riesce. La parola chiave dell'operatore TryCast si applica solo ai tipi riferimento e restituisce Nothing se la conversione non riesce.

  3. Se esiste una conversione verso un tipo di dati più piccolo e il programma può tollerare un errore in fase di esecuzione oppure si ritiene che un errore in fase di esecuzione sia improbabile, è possibile specificare Option Strict Off all'inizio del codice sorgente. È tuttavia necessario inserire la conversione in un blocco di istruzioni Try...Catch...Finally per evitare risultati imprevisti o una terminazione anticipata del programma.

  4. Se non esiste alcuna conversione da <type1> a <type2>, è necessario rivalutare la logica del programma. Potrebbe essere possibile scrivere codice in grado di assegnare valori a <type2> corrispondenti ai valori previsti di <type1>.

  5. Se non esiste alcuna conversione da <type1> a <type2> e uno dei tipi è una classe o una struttura definita, potrebbe essere possibile definire un operatore di conversione da questo tipo all'altro tipo o viceversa. Per altre informazioni, vedere How to: Define a Conversion Operator.

  6. In tutti i casi e come indicazione generale, è consigliabile evitare di usare le conversioni verso un tipo di dati più piccolo, a meno che non sia possibile inserire gli errori in un blocco Catch e gestirli in modo efficace.

Vedi anche