Condividi tramite


Option Strict On non consente conversioni implicite da '<type1>' a '<type2>'

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

Questo tipo di conversione viene chiamato conversione verso un tipo di dati più piccolo ed è possibile che non riesca in fase di esecuzione. Per questo motivo, Option Strict On non consente conversioni implicite di restringimento.

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 se entrambe sono istanze di classi, è in genere possibile effettuare questa determinazione consultando la tabella in Conversioni di tipo widening e narrowing.

  2. Se esiste solo una conversione di tipo narrowing da <type1> a <type2>, è consigliabile usare il cast esplicito. Le parole chiave CType Function e DirectCast Operator generano un'eccezione di runtime se la conversione non riesce. La parola chiave TryCast Operator si applica solo ai tipi di riferimento e restituisce Nothing se la conversione non riesce.

  3. Se esiste una conversione di tipo narrowing e il programma può tollerare un errore di runtime oppure si è certi che non sia possibile eseguire un errore di runtime, è possibile specificare Option Strict Off all'inizio del codice sorgente. Ma dovresti comunque racchiudere la conversione in un tentativo... Prendere... Blocco istruzione finally per evitare risultati imprevisti o 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 ai <type2> 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 tale tipo a o dall'altro tipo. Per altre informazioni, vedere Procedura: Definire un operatore di conversione.

  6. In tutti i casi e come linea guida generale, è consigliabile evitare di usare conversioni di tipo narrowing, a meno che non sia possibile intercettare gli errori in un Catch blocco e gestirli in modo efficace.

Vedere anche