Condividi tramite


Non è possibile copiare il valore del parametro "ByRef" "<parametername>" nell'argomento corrispondente perché il tipo "<typename1>" non può essere convertito nel tipo "<typename2>"

Una routine è dichiarata con un tipo di parametro che non può essere riconvertito nel tipo dell'argomento chiamante.

Quando si definisce una classe o una struttura, è possibile definire uno o più operatori di conversione per convertire il tipo della classe o della struttura in altri tipi. È anche possibile definire operatori di conversione inversi per riconvertire gli altri tipi nel tipo della classe o della struttura originale. Quando si usa la classe o il tipo di struttura in una chiamata di routine, Visual Basic può usare questi operatori di conversione per convertire il tipo di un argomento nel tipo del parametro corrispondente.

Se si passa l'argomento ByRef, Visual Basic copia a volte il valore dell'argomento in una variabile locale nella routine invece di passare un riferimento. In un caso simile, alla restituzione della routine Visual Basic deve quindi ricopiare il valore della variabile locale nell'argomento nel codice chiamante.

Se un valore dell'argomento ByRef viene copiato nella routine e l'argomento e il parametro sono dello stesso tipo, non è necessaria alcuna conversione. Se invece i tipi sono diversi, Visual Basic deve eseguire la conversione in entrambe le direzioni. Se uno dei tipi è il tipo della classe o della struttura, Visual Basic deve convertirlo nell'altro tipo e dall'altro tipo. Questo significa che è necessario definire operatori di conversione in entrambe le direzioni.

ID errore: BC33037

Per correggere l'errore

  • Se possibile, usare un argomento chiamante dello stesso tipo del parametro della routine, in modo che Visual Basic non debba eseguire alcuna conversione.

  • Se è necessario chiamare la routine con un tipo di argomento diverso dal tipo del parametro, ma non è necessario restituire un valore nell'argomento chiamante, definire il parametro in modo che sia ByVal invece che ByRef.

  • Se è necessario restituire un valore nell'argomento chiamante, definire l'operatore di conversione inverso in modo che Visual Basic possa eseguire la riconversione al tipo dell'argomento chiamante.

Vedi anche